3 回答
![?](http://img1.sycdn.imooc.com/54584ed2000152a202200220-100-100.jpg)
TA贡献1834条经验 获得超8个赞
$dbPreparedStatement = $db->prepare('INSERT INTO table (htmlcontent) VALUES (?)');$dbPreparedStatement->execute(array($yourHtmlData));
$dbPreparedStatement = $db->prepare('INSERT INTO table (htmlcontent) VALUES (:htmlcontent)');$dbPreparedStatement-> execute(array(':htmlcontent' => $yourHtmlData));
bindParam
$db->bindParam(':userId', $userId, PDO::PARAM_INT);
$dbPreparedStatement = $db->prepare('INSERT INTO table (postId, htmlcontent) VALUES (:postid, :htmlcontent)'); $dbPreparedStatement->bindParam(':postid', $userId, PDO::PARAM_INT);$dbPreparedStatement->bindParam(':htmlcontent', $yourHtmlData, PDO::PARAM_STR);$dbPreparedStatement->execute();
$db
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
TA贡献1982条经验 获得超2个赞
构建一个通常的查询方式,使其看起来与SQL控制台中运行的SQL查询完全一样。 要做到这一点,一个人应该明白 一整套规则,而不仅仅是“使用MySQL_REAL_EXECH_String”。 规则,如: 字符串应该用引号和转义来括起来。这是转义的唯一含义:它只是逃避分隔符!(以及其他一些字符-字符串终止字符和转义字符本身)。没有周围的引号,MySQL_REAL_EXECH_String就没用了。 数字应该显式地转换为它的类型。虽然数据数字可以像字符串一样受到威胁,但也有一些数字,比如限制子句参数,它们不能转义,只能进行强制转换。 发送查询和数据 分别.这是最可取的方式,因为它可以缩短为只是“使用绑定”。所有字符串、数字和限制参数都可以绑定-完全不用担心。 使用此方法,您的查询将占位符按原样发送到数据库,绑定数据以单独的数据包发送,因此不会发生干扰。就像 电码和 数据分离。将程序(查询本身)与数据分开发送。
但!
$orders = array("name","price","qty"); //field names$key = array_search($_GET['sort'],$orders)); // see if we have such a name$orderby = $orders[$key]; //if not, first one will be set automatically. smart enuf :)$query = "SELECT * FROM `table` ORDER BY $orderby"; //value is safe
$w = array();$where = '';if (!empty($_GET['rooms'])) $w[]="rooms='".mesc($_GET['rooms'])."'";if (!empty($_GET['space'])) $w[]="space='".mesc($_GET['space'])."'";if (!empty($_GET['max_price'])) $w[]="price < '".mesc($_GET['max_price'])."'";if (count($w)) $where="WHERE ".implode(' AND ',$w);$query="select * from table $where";
- 3 回答
- 0 关注
- 916 浏览
添加回答
举报