我环顾互联网并无法解决此问题.
我正在尝试通过此函数使用PDO将一行插入到mySQL表中
function newItem($name, $desc, $price, $catID){
echo $name . "\n";
echo $price . "\n";
echo $desc . "\n";
echo $catID . "\n";
$conn = self::connect();
//INSERT Order
$sql = "INSERT INTO catalogue (Name, Price, CatID, Desc)
VALUES ('$name', $price, $catID, '$desc')";
// use exec() because no results are returned
$conn->exec($sql);
}
Run Code Online (Sandbox Code Playgroud)
当我这样做,我得到这个错误:
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 MariaDB server version for the right syntax to use near 'Desc) VALUES ('User', 0.00, 3, 'theUser')' at line 1' in C:\xampp\htdocs\classes\catalogue.php:65 Stack trace: #0 C:\xampp\htdocs\classes\catalogue.php(65): PDO->exec('INSERT INTO cat...') #1 C:\xampp\htdocs\classes\main.php(39): Catalogue->newItem('User', 'theUser', '0.00', '3') #2 {main} thrown in C:\xampp\htdocs\classes\catalogue.php on line 65
Run Code Online (Sandbox Code Playgroud)
我可以确认该self::connect();方法是有效的,只有在我尝试将数据插入到Desc列时才会出现问题.
我花了很多时间试图解决这个问题,但是我对PDO的了解非常模糊......
谁能看到我出错的地方?
这echo表明:
User 0.00 theUser 3
Run Code Online (Sandbox Code Playgroud)
DESC是一个关键字.您必须使用backtics转义列名称或更好地重命名列.
$sql = "INSERT INTO catalogue (Name, Price, CatID, `Desc`)
VALUES ('$name', $price, $catID, '$desc')";
Run Code Online (Sandbox Code Playgroud)
有关关键字的更多信息,请参阅官方文档.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |