php必须搭配mysql吗_PHP中MySQL的使用

连接到MySQL:

mysql_connect():

$dbc=mysql_connect($host,$user,$password);

选择当前数据库:

mysql_select_db($database_name);

mysql_select_db('$database_name',$conn);

eg:

<?phpDEFINE ('DB_USER','root');DEFINE('DB_PWD','mysql');DEFINE('DB_HOST','localhost');DEFINE('DB_NAME','content');$dbc=@mysql_connect(DB_HOST,DB_USER,DB_PWD) ORdie('Could not connect to MySQL:'.mysql_error());

@mysql_select_db(DB_NAME) ordie('Could not select the database:'.mysql_error());?>

如果函数不能返回有效的资源链接,则会执行or die(), die()函数会终止脚本的执行。

执行简单的查询:

$result=mysql_query($query);

对于像insert、update、delete等简单的查询,它们不会返回记录,$result变量将会返回true或false,这取决于查询是否执行成功。对于确实会返回记录的复杂查询(select、show、describe和explain),如果查询有效,则$result变量将是一个指向查询结果的资源链接;如果查询无效,则$result变量将为false。

1

2 <?php3 $page_title='Register';4 include('Noname1.php');5 if(!empty($_POST['submit']))6 {7 $errors=array();8 }9 if(empty($_POST['name']))10 {11 $errors[]='You forgot to enter your name.';12 }13 else14 {15 $name=$_POST['name'];16 }17 18 if(empty($_POST['email']))19 {20 $errors[]='You hava fotgot to enter your email';21 }22 else23 {24 $email=$_POST['email'];25 }26 27 if(!isset($_POST['gender']))28 {29 $errors[]='You hava forgot to enter your gender';30 }31 else32 {33 $gender=$_POST['gender'];34 }35 36 /*if(!empty($POST['comments']))37 {38 $comments=$_POST['comments'];39 }40 else41 {42 $errors[]='You hava forgot to set the comments';43 }*/44 if(empty($errors))45 {46 require_once('connectdb.php');47 $query="insert into urls(url,title,description) values('$name','$email','$gender')";48 $result=@mysql_query($query);49 if($result)50 {51 echo'

Thank you!';52 }53 else54 {55 echo'System error'.mysql_error();56 }57 }58 else59 {60 echo'

Error!

';61 foreach($errorsas$msg)62 {63 echo"-$msg
\n";64 }65 echo'Please try again!';66 }67 ?>68

关闭现有的MySQL链接:

mysql_close();//php会在脚本的末尾自动关闭连接,所以这不是必须的。

检索查询结果

格式:

mysql_fetch_row(result);

说明:mysql_fetch_row用来查询结果的一行保存至数组,该数组下标从0开始,每一个数组元素对应

一个域。通过循环,可以将查询结果全部获得。

格式:

1 mysql_fetch_array(result);

说明:mysql_fetch_array和mysql_fetch_row功能基本相同,只不过它除了可以用从0开始的偏移量作

索引,还可以用域名作索引。

值返回下一行的所有域值,并将其保存至一个数组中,没有行时返回false。

mysql_query("set name 'GBK'")

//使用GBK中文编码

处理select查询结果的主要工具是mysql_fetch_array(),它带有一个查询结果变量($result),并以数组格式一次返回一行数据。

从查询读取每条记录:

while($row=mysql_fetch_array($result))

{.........}

mysql_fetch_array()函数还带有一个可选项,用于指定返回的数组的类型:联合数组、索引数组,或则两者。联合数组允许通过名称引用列值,而索引数组则要求只使用数字,他们如下表:

常量

示例

MYSQL_ASSOC

$row['column']

MYSQL_NUM

$row[0](速度稍快)

MYSQL_BOTH

$row[0]或$row['column'](默认)

释放查询信息:

mysql_free_result($result);

这一步不是必需的,因为PHP将在脚本末尾自动释放资源。

eg:

1 <?php2 require_once('connectdb.php');3 $query="select concat(url,',',title) as name ,url_id as id from urls";4 $result=@mysql_query($query);5 if($result)6 {7 echo'

NAMEid
'.$row['name'].''.$row['id'].'

The current users could not be retrieved.We apologize for any inconvenience

';21 echomysql_error();22 }23 mysql_close();24 25 ?>

运行结果为:

6467f461d0dd24a0a798c9533078c5cc.png

技巧总结

mysql_fetch_array()函数与mysql_fetch($result,MYSQL_NUM)函数等价

mysql_fetch_assoc()函数与mysql_fetch_array($result,MYSQL_ASSOC)函数等价

必需使用mysql_query()执行查询,然后使用mysql_fetch_array()来检索单行信息,如果要检索多行,则可使用while循环(而不要使用for或foreach循环)。

确保SQL安全

关于PHP的数据库安全可归纳为两大类问题:

1.保护数据库访问信息

2.在运行查询时要小心。

使用特定的

mysql_real_escape_string()

函数,转义那些有可能有问题的字符来清理数据:

$data=mysql_real_escape_string($data,$dbc);

这个函数与addslashes()一样。它更特定于数据库。

使用ini_get()函数测试Magic Quotes状态,这个函数将为特定的选项返回PHP的配置文件中的配置。如果ini_get()函数返回true,就说明打开了Magic Quotes——则将在应用mysql_real_escape_string()之前,去除所有的斜杠。

在pHP的当前版本中,Magic Quotes默认是关闭的,因此ini_get()将返回FALSE,并且不需要去除任何现有的斜杠。

如果Magic Quotes是开启的情况下,它会自动在需要转义的字符前加上“\”,而我们向数据库中写入的时候这往往会引起错误,所以需要使用stripslashes($string)把那些\去掉。然后再调用mysql_real_escape_string()函数。

eg:

1 functionescape_data($data)2 {3 global$dbc;4 if(ini_get('magic_quotes_gpc'))5 {6 $data=stripslashes($data);7 }8 retrunmysql_real_escape_string(trim($data),$dbc);9 }

技巧总结

mysql_real_escape_String()函数一招所用的语言对字符串进行转义

mysql_real_escape_string()函数需要一个数据库连接。

get_magic_quotes_gpc()函数也可用于返回当前的Magic

Quotes设置。

ini_get()可用于获取许多不同的php.ini设置的内容,不只是Magic

Quotes的设置。

统计返回的记录

mysql_num_rows(),返回select查询索引的行数,并取查询的结果作为一个参数。

eg:

$num=mysql_num_rows($result);

其他常用Mysql函数介绍

mysql_insert_id

传回最后一次使用INSERT指令的ID。

mysql_tablename

取得数据库名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值