作者:王功争_781 | 来源:互联网 | 2023-10-12 17:24
连接到MySQL:mysql_connect():$dbcmysql_connect($host,$user,$password);选择当前数据库:mysql_select_db(
连接到MySQL:
mysql_connect():
$dbc=mysql_connect($host,$user,$password);
选择当前数据库:
mysql_select_db($database_name);
mysql_select_db(‘$database_name’,$conn);
eg:
如果函数不能返回有效的资源链接,则会执行 or die(), die()函数会终止脚本的执行。
执行简单的查询:
$result=mysql_query($query);
对于像insert、update、delete等简单的查询,它们不会返回记录,$result变量将会返回true或false,这取决于查询是否执行成功。对于确实会返回记录的复杂查询(select、show、describe和explain),如果查询有效,则$result变量将是一个指向查询结果的资源链接;如果查询无效,则$result变量将为false。
1 2 Error!';61 foreach($errors as $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 8 NAME | id | '; 9 10 while($row=mysql_fetch_array($result,MYSQL_ASSOC))11 {12 echo '
'.$row['name'].' | '.$row['id'].' |
';13 }14 echo '';15 mysql_free_result($result);16 }17 18 else19 {20 echo 'The current users could not be retrieved.We apologize for any inconvenience
';21 echo mysql_error();22 }23 mysql_close(……本2文来源gaodai.ma#com搞##代!^码@网3
搞代gaodaima码
);24 25 ?>
运行结果为:
技巧总结
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 function escape_data($data)2 {3 global $dbc;4 if(ini_get('magic_quotes_gpc'))5 {6 $data=stripslashes($data);7 }8 retrun mysql_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
取得数据库名称