SQL查询无法从数据库中接收正确的值?

时间:2015-02-28 21:49:40

标签: php mysql

解决方案:我在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

3 个答案:

答案 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...."/>

祝你们玩得愉快!