我有一个网站,我可以在其中连接到 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 。
- 正常的 UPDATE 查询。
以上所有内容都可以“正常”快速完成,但使用准备好的语句似乎需要更多行。