gpt4 book ai didi

PHP PDO 选择名称中带有单引号的列

转载 作者:行者123 更新时间:2023-11-29 03:42:17 30 4
gpt4 key购买 nike

在 phpmyadmin 中,我可以通过 SQL 运行它:

SELECT * FROM mytable WHERE `Bob's Stuff` > 1

但是,当我运行完全相同的查询时,一个 php 脚本:

$stmt->prepare("SELECT * FROM mytable WHERE `Bob's Stuff` > :int");
$stmt->bindValue(':int', $int);
$stmt->execute();

我收到这个错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':int AND Bob's
Stuff
>= '1')' at line 10' in script.php:208 Stack trace: #0 script.php(208): PDOStatement->execute() #1 {main} thrown in script.php on line 208

如果我将查询列更改为任何其他列名,查询工作正常。

是否可以使用带撇号的列名?

最佳答案

将该列名也作为参数,

$tableName = "`Bob\'s Stuff`";
$stmt->prepare("SELECT * FROM mytable WHERE :tableName > :int");
$stmt->bindValue(':tableName', $tableName);
$stmt->bindValue(':int', $int);
$stmt->execute();

顺便说一下,一个建议是下次不要创建像 Bob's Stuff 这样的列。像这样 BobStuff 把它变成一个单词。

关于PHP PDO 选择名称中带有单引号的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329733/

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