解决方案:我在PHP和SQL方面的知识很少问这个问题,我的回答的解决方案就是将这个变量包装起来' $ PLATE_NUMBER'因为它是一个字符串。这也在下面的第一条评论中得到了解答。
从代码中可以看出,当我点击搜索时,我收到了 "没有搜索结果!"我的查询有问题,因为如果我将其更改为
"SELECT * FROM `tires` WHERE PLATE_NUMBER LIKE '%$PLATE_NUMBER%'"
然后我收到mySQL数据库中的数据?
顺便说一句:我也在mySQL中测试了这两个查询,但它确实有效。那么这里有什么问题呢?我希望搜索实例" CV33610",并从我的数据库中接收该行..$query = mysql_query("SELECT * FROM `tires` WHERE PLATE_NUMBER='%$PLATE_NUMBER%'", $connection) or die("Could not search!");
$count = mysql_num_rows($query); // Returns an integer of how many rows in your table that is picked up.
if($count == 0){
$output = 'There was no search results!';
} else {
// Collect the data into an array
while($row = mysql_fetch_array($query)){
$platenumber = $row['PLATE_NUMBER'];
$id = $row['id'];
// View the parameters to the screen.
$output .= '<div>'.$id.' '.$platenumber.'</div>';
} // End while statement
} // End if statement
答案 0 :(得分:0)
$ PLATE_NUMBER必须是PLATE_NUMBER中的exanct条目。
$query = mysql_query("SELECT * FROM `tires` WHERE PLATE_NUMBER = $PLATE_NUMBER", $connection) or die("Could not search!");
$ PLATE_NUMBER只需要是PLATE_NUMBER
中的一些文字$query = mysql_query("SELECT * FROM `tires` WHERE PLATE_NUMBER LIKE CONCAT('%' . $PLATE_NUMBER . '%')", $connection) or die("Could not search!");
LIKE正在搜索PLATE_NUMER可以在$ PLATE_NUMBER之前有什么东西的行。如果任何文本可以在变量集之前或之后站立,则使用(%)。
这应该有效, CONCAT 收集发送给它的变量。所以当MySQL正在阅读它时它看起来是正确的。
你也应该使用PDO或MySQLi准备语句在你的网站上进行MySQL调用,因为普通的mysql根本不安全。
答案 1 :(得分:0)
由于我们正在处理字符串值CV33610
,因此您需要使用单引号包装$PLATE_NUMBER
变量。
$query = mysql_query("SELECT * FROM `tires`
WHERE PLATE_NUMBER = '$PLATE_NUMBER'", $connection)
or die(mysql_error());
在您的查询中添加or die(mysql_error())
后会发出语法错误信号。
<强> 旁注: 强>
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
答案 2 :(得分:0)
非常感谢帮助我解决这个问题。最后,我发现了问题所在。唯一的问题是这个
问题:<input type="text" name="search" placeholder="Search for tires...."/>
解决方案:<input type="text" name="PLATE_NUMBER" placeholder="Search for tires...."/>
祝你们玩得愉快!