在MySQLi,PDO或PHP中是否存在使用参数化查询但未准备好以后再召回的API?当我们不调用SQLParameter的.Prepare()方法时,我在ADO.NET中找到了它,但我没有在PHP中找到它。
答案 0 :(得分:0)
将预准备语句发送到数据库服务器,并将值与查询分开。如果你想让ID为1337的用户使用PDO,你会这样做;
$sql = 'SELECT u.id, u.username FROM users u WHERE u.id = :theUserIdToGet LIMIT 1';
$stmt = $db->prepare($sql);
$stmt->bindValue(':theUserIdToGet', 1337);
$result = $stmt->fetch();
在传统的查询中,这只是;
$sql = 'SELECT u.id, u.username FROM users u WHERE u.id = ' . 1337 . ' LIMIT 1';
$stmt = $db->query($sql);
$result = $stmt->fetch();
第一个例子显然需要更多代码,但它具有以下优点;
由于其易读性和安全性,在将变量插入查询时应始终使用预准备语句。
PDO通常被认为是非常好的,我个人经常使用它。它的学习曲线很温和,互联网上有许多教程。它的文档是here