【发布时间】:2012-06-05 07:31:24
【问题描述】:
我有一个网站,我连接到 mySQL 数据库以进行一些查询,以通常的方式。我没有做比以下更复杂的事情:
$result = mysql_query('SELECT * FROM table WHERE condition = "'.mysql_real_escape_string($_POST['condition']).'"');
$row = mysql_fetch_assoc($result);
echo $row['var1'].' '.$row['var2'];
而且它有效。但是我一直在阅读准备好的语句,它们似乎提供了更多的安全性,我想使用它们并用一些准备好的语句替换我的数据库调用,所以我一直在研究 mysqli 类。
但似乎要实现同样的事情需要更多的代码。我知道我必须这样做才能获得上述内容:
$stmt = $db->stmt_init();
if($stmt->prepare('SELECT * FROM table WHERE condition = ?')) {
$condition = $_POST['condition'];
$stmt->bind_param('s', $condition);
$stmt->execute();
$stmt->bind_result($var1, $var2, ...);
if ($stmt->fetch()) {
echo $var1 . ' - ' . $var2;
}
}
所以看起来代码更多,而且更难管理。我是否误解了如何使用这些,或者是否有更短的方法来做“正常”的 PHP 事情:
- 填充 $row,这是一个数组,表示数据库中的一行。
- 循环遍历行,并用“下一行”重新填充 $row。
- 正常的更新查询。
以上所有内容都可以“正常”快速完成,但使用准备好的语句似乎需要更多行。
【问题讨论】:
-
也许你应该读一读net.tutsplus.com/tutorials/php/…
-
@Gustav 我会接受该链接和相关摘录作为答案...