我从一行中收到两种不同类型的错误,我花了很长时间才找出错误所在。这是 php 在使用 bacticks 连接 MySql 查询语句以分隔字符串时显示的一个有趣的行为。$query='SELECT c.name as category_name, p.id, p.category_id, p.title, p.body, p.author, p.created_at FROM'.$this->table. ' p LEFT JOIN categories c ON p.category_id=c.id ORDER BY p.created_at DESC';注意:FROM 和反引号之间没有空格。错误如下致命错误:未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有误;检查与您的 MariaDB 服务器版本对应的手册,了解在 C:\xampp\htdocs\php_REST_myblog\ 中第 2 行的 'p LEFT JOIN categories c ON p.category_id=c.id ORDER BY p.crea' 附近使用的正确语法models\Post.php: 31 堆栈跟踪:#0 C:\xampp\htdocs\php_REST_myblog\models\Post.php(31): PDOStatement->execute()#1 C:\xampp\htdocs\php_REST_myblog\api\posts \read.php(18): Post->read()#2 {main } throw in C:\xampp\htdocs\php_REST_myblog\models\Post.php on line 31下一个变化是 $query='SELECT c.name as category_name, p.id, p.category_id, p.title, p.body, p.author, p.created_at FROM '.$this->table. 'p LEFT JOIN categories c ON p.category_id=c.id ORDER BY p.created_at DESC';注意反引号和 p 之间没有空格。DB name 是 myblog 和 table name 是 posts. 下面的错误是致命错误:未捕获的 PDOException:SQLSTATE[42S02]:未找到基表或视图:1146 C:\xampp\htdocs\php_REST_myblog\models\Post.php 中不存在表“myblog.postsp”:31 堆栈跟踪:# 0 C:\xampp\htdocs\php_REST_myblog\models\Post.php(31): PDOStatement->execute()#1 C:\xampp\htdocs\php_REST_myblog\api\posts\read.php(18): 后-> read()#2 {main }在第31行 C:\xampp\htdocs\php_REST_myblog\models\Post.php中抛出正确的代码在下面有两个额外的空格。$query='SELECT c.name as category_name, p.id, p.category_id, p.title, p.body, p.author, p.created_at FROM '.$this->table. ' p LEFT JOIN categories c ON p.category_id=c.id ORDER BY p.created_at DESC';出了什么问题?
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消