第11章 使用PHP从Web访问MySQL数据库
1.过滤用户可能值其搜索条件的起始或结束位置不小心输入的空白字符: 应用trim();
2.转义数据(第4章)函数:addslashes(),stripslashes(),get_magic_quotes_gpc();
3.在脚本中连接MySQL服务器:mysqli(…,…,…,…);
//面向对象的方法(实例化一个对象)
@ $db=new mysqli(‘localhost’,’bookorama’,’bookorama123’,’books’);
//面向过程的方式
@ $db=mysqli_connect(‘localhost’,’bookorama’,’bookorama123’,’books’);
//测试连接的结果的函数:mysqli_connect_errno()
4.从Web连接数据库:
mysqli_select_db(db_resource, db_name);
或 $db->select_db(dbname);
5\.查询数据库:
$result=$db->query($query); //面向对象版本
$result=mysqli_query($db,$query); //面向过程版本
6.返回记录行的行数:
$num_results=$result->num_rows; //面向对象版本
$num_results=mysqli_num_rows($result); //面向过程版本
7.
①获取集合中某一行并以一个相关数组返回该行:
$row=$result->fetch_assoc(); //面向对象版本
$row=mysqli_fetch_assoc($assoc); //面向过程版本
然后通过$row[‘title’],$row[‘author’]等来访问每个属性;
②获取一行并取回到一个对象中:
$row=$result->fetch_object(); 或 $row=mysqli_fetch_object($result);
然后通过$row->title,$row->author等来访问每个属性;
8.从数据库断开连接:
①释放结果集: $result->free(); 或 mysqli_free_result($result);
②关闭与数据库的连接:$db->close(); 或 mysqli_close($db);
9.prepared语句:
①查询速度更快,可免受sQL注射风格的攻击;
②基本思想:向MySQL发送一个需要执行的查询模板,然后再单独发送数据;
如: 【INSERT插入操作:用prepare绑定参数】
$query=”insert into books values(?,?,?,?)”; //查询模板
$stmt=$db->prepare($query); //构建需要用来完成实际处理的资源
$stmt->bind_param(“sssd”,$isbn,$author,$title,$price);
//bind_param()告诉PHP哪些变量应该被问号所替换
//第一个参数(这里是”sssd”)是一个格式化字符串
//sssd:所传递的四个参数分别是字符串、字符串、字符串、双精度
//s:字符串 d:双精度 i:整数 b:blob
//过程版本中是mysqli_stmt_bind_param()
$stmt->execute(); //调用execute()函数时才真正运行此查询
//过程版本中是mysqli_stmt_execute()
【SELECT选择操作:用prepare绑定结果】
$stmt->bind_result($isbn,$author,$title,$price); //提供希望填充结果列的变量列表
//mysqli_stmt_bind_result()
$stmt->execute();
//然后在循环中调用如下语句:
$stmt->fetch(); //fetch()将获得依次获得一个结果行,并填充到绑定变量中