gpt4 book ai didi

php - PDO 出现错误

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

所以我尝试在我的代码中使用这个 name = $con->real_escape_string($_POST['name']); ,但它不起作用。我收到错误

Fatal error: Call to undefined method PDO::real_escape_string() in /Users/idrisk/Colourity/si/r.php on line 15` I'm not sure what that means. Here's the code I have so far.

$username = "xxx";
$password = "xxx";
try
{
$con = new PDO('mysql:host=localhost;s=myDatabase', $username, $password);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e)
{
echo 'ERROR: ' . $e->getMessage();
}



$name = $con->real_escape_string($_POST['name']);
$username = $con->real_escape_string($_POST['username']);
$email = $con->real_escape_string($_POST['email']);
$password1 = $con->real_escape_string($_POST['pass1']);
$password2 = $con->real_escape_string($_POST['pass2']);

有什么想法吗?

最佳答案

PDO 没有 real_escape_string 函数,但它有 PDO::quote()

$name = $con->quote($_POST['name']);

PDO::quote() 做了一件 mysqli::real_escape_string() 不做的事情:它在生成的转义字符串周围添加引号。

mysqli 示例:

$name = $mysqli->real_escape_string($_POST['name']);
$sql = "SELECT * FROM table1 WHERE name = '$name'"; // use single-quotes

PDO 示例:

$name = $pdo->quote($_POST['name']);
$sql = "SELECT * FROM table1 WHERE name = $name"; // don't use single-quotes

无论如何,正如 @AmalMurali 上面评论的那样,最好使用准备好的语句和参数。这是使用prepare()并将参数传递给execute()的简单方法:

$sql = "INSERT INTO table1 VALUES (:name, :username, :email, :pass1)";
$params = array_intersect_key($_POST,
array_flip(array('name', 'username', 'email', 'pass1')));
$stmt = $pdo->prepare($sql);
$stmt->execute($params);

参数更好,因为它们对于防止 SQL 注入(inject)同样安全,而且比困惑且容易出错的转义、引用和字符串连接更容易正确。

如果您不认识我展示的某些功能,请阅读文档:

习惯阅读文档。阅读文档、阅读其他人的代码和实验是我们大多数人学习所有这些东西的方式。

几乎所有 PHP 文档页面中甚至都有代码示例。

关于php - PDO 出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23189303/

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