作为商场背景:
这是一个查询,我在其中查找字符串中的关键字。
我用“”空格分解字符串:
$words = explode(" ", $searchstring);
然后我用逗号分隔它们:
$commaSeparatedString = implode(", ", $words);
然后我执行查询:
$searchQuery = sprintf("SELECT * FROM solution T1 join solution_tags_intermediate T2
on T1.ID_SOLUTION = T2.ID_SOLUTION
join solution_tags T3 on T2.ID_SOLUTION_TAGS = T3.ID_SOLUTION_TAGS
WHERE T3.SOLUTION_TAGS_NAME IN '%s'", $commaSeparatedString);
我执行查询:
$resultSet = $DBConnect->query($searchQuery);
我收到以下错误:
Warning: Creating default object from empty value in C:\wamp\www\helpdesk\index.php on line 21
Fatal error: Call to undefined method stdClass::fetch_assoc() in C:\wamp\www\helpdesk\index.php on line 27
第 21 行是:
if($resultSet->num_rows = 0){ /*more code here*/}
第 27 行是:
while($tableData = $resultSet->fetch_assoc()){/*print some stuff here*/}
据我所知,这是查询的正确语法,但 phpmyadmin 说它不是。这是我实际执行的查询:
SELECT * FROM solution T1 join solution_tags_intermediate T2
on T1.ID_SOLUTION = T2.ID_SOLUTION
join solution_tags T3
on T2.ID_SOLUTION_TAGS = T3.ID_SOLUTION_TAGS
WHERE T3.SOLUTION_TAGS_NAME IN 'internet, renweb'
phpmyadmin 抛出的错误是:
#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 ''internet, renweb' LIMIT 0, 30' at line 1
我做错了什么?我已经在这个项目上工作了 8 个多小时,我知道这可能很简单,但我就是无法弄清楚问题是什么。
最佳答案
试试这个查询:
SELECT * FROM solution T1 join solution_tags_intermediate T2
on T1.ID_SOLUTION = T2.ID_SOLUTION
join solution_tags T3
on T2.ID_SOLUTION_TAGS = T3.ID_SOLUTION_TAGS
WHERE T3.SOLUTION_TAGS_NAME IN ('internet', 'renweb')
你这里也有问题:
if($resultSet->num_rows = 0){ /*more code here*/}
你需要像这样使用比较符号==
:
if($resultSet->num_rows == 0){ /*more code here*/}
关于php - mysql 语法错误,无法检测到它的位置 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749240/