【发布时间】:2015-03-12 18:00:04
【问题描述】:
我在使用 PDO 从数据库中删除记录时遇到了一点问题。
它只是返回 false,我似乎不明白为什么,有人可以帮忙吗? 代码:
$db = new PDO('sqlsrv:Server='.DB_HOST.';Database='.DB_NAME, DB_USER, DB_PASS);
$query = $db->prepare('DELETE * FROM '.$table.' WHERE id = :id');
$query->bindValue(':id', $id);
$query->execute();
我也试过了:
$db = new PDO('sqlsrv:Server='.DB_HOST.';Database='.DB_NAME, DB_USER, DB_PASS);
$db->exec('DELETE * FROM '.$table.' WHERE id = '.$id);
我知道数据库中的用户有权删除,因为我可以在 SQL 客户端中成功运行查询。
有什么想法吗?
谢谢:)
【问题讨论】:
-
我很好奇你是如何得到这个
$tablevar。这可能是一个安全漏洞。 -
@brewal 我也是这么想的——希望他至少能把它包裹在
mysqli_real_escape_string中 -
我想我会将数组中的一些表名列入白名单,然后使用
in_array()函数对其进行测试。 -
$table 和 $id 是我传递的,而不是用户传递的。这属于我正在创建的一个简单的 CRUD 类,我刚刚发布了相关部分。
-
好吧,以防万一;)