gpt4 book ai didi

PHP 表名从 mysql_real_escape_string 更改为 PDO

转载 作者:行者123 更新时间:2023-11-29 13:17:02 25 4
gpt4 key购买 nike

我目前使用 mysql_real_escape_string 来转义 mysql 查询中的变量。我知道如何使用bindValue,但是当我尝试从变量插入表名时,我有一个关于保护的问题。例如

$tablename = mysql_real_escape_string($name_from_form);
$get = mysql_query("SELECT * FROM ".$tablename." WHERE keyword='something'");

任何人都可以帮我举一个如何执行 PDO 准备好的语句的示例吗?它的作用与上面相同?

最佳答案

您将无法转义表名称(我希望 $tablename 不是来自外部源 - 如果是,您将需要将允许的表名称列入白名单)。在 PDO 中,您的代码可能类似于:

$allowedTables = array('posts', 'users');
if(!in_array($tablename, $allowedTables)){
throw new Exception('Invalid table name: ' . $tablename);
}

$keyword = 'something';
$stmt = $dbh->prepare("SELECT * FROM " . $tablename . " WHERE keyword = :keyword");
$stmt->bindParam(':keyword', $keyword);
$stmt->execute();

关于PHP 表名从 mysql_real_escape_string 更改为 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com