Php 为什么对mysql数据库的搜索没有结果?第一次使用LIKE

Php 为什么对mysql数据库的搜索没有结果?第一次使用LIKE,php,mysql,Php,Mysql,在此处编辑其他人的代码,因此我无法更改数据库中名为title的字段,也无法更改为MySQLi等:/ 代码连接到数据库时没有问题,但总是得到零结果 $strSQL = "SELECT * FROM newproducts WHERE 'title' LIKE ('%$q%')"; $sql = mysql_query($strSQL) or die(mysql_error()); $num_rows = mysql_num_rows($sql); if ( $q == '' ) { ec

在此处编辑其他人的代码,因此我无法更改数据库中名为
title
的字段,也无法更改为MySQLi等:/

代码连接到数据库时没有问题,但总是得到零结果

$strSQL = "SELECT * FROM newproducts WHERE 'title' LIKE ('%$q%')";
$sql = mysql_query($strSQL) or die(mysql_error());
$num_rows = mysql_num_rows($sql);

if ( $q == '' ) {
    echo '<p class="black-text">Please provide a search term.</p>';
}

else if ( $num_rows <= 0 ) {
    echo '<p class="black-text">Your search for <b>'.$q.'</b> returned <b>0</b> results.</p>';
}

else { 

    echo '<p class="black-text">Your search for <b>'.$q.'</b> returned <b>'.$num_rows.'</b> result(s).<br/><br/>';  
    while($row = mysql_fetch_assoc($sql)) {
        echo '- '.$row['title'].' <a href="'.$row['link'].'.html" class="search-link">[Read more]</a><br/>';
    }
    echo '</p>';
}
$strSQL=“从“title”类似(“%$q%”)的新产品中选择*”;
$sql=mysql\u query($strSQL)或die(mysql\u error());
$num\u rows=mysql\u num\u rows($sql);
如果($q=''){
echo“

请提供搜索词。

”; }
如果MySQL中的($num_rows)单引号表示字符串:

SELECT * FROM newproducts WHERE 'title' LIKE ('%$q%')
应该是

SELECT * FROM newproducts WHERE title LIKE ('%$q%')
此外,在执行查询之后,您正在测试
if($q='')
,您可能希望在之前执行该操作,但这并不会导致您的问题


最后,使用可能不安全的用户输入可能会带来SQL注入的风险,但我不打算深入讨论,因为这与您的问题没有直接关系。现在大多数PHP开发人员都在使用预处理语句来确保查询的安全性(因为运行查询的旧方式将被弃用).

在MySQL中,单引号表示字符串:

SELECT * FROM newproducts WHERE 'title' LIKE ('%$q%')
应该是

SELECT * FROM newproducts WHERE title LIKE ('%$q%')
此外,在执行查询之后,您正在测试
if($q='')
,您可能希望在之前执行该操作,但这并不会导致您的问题


最后,使用可能不安全的用户输入可能会带来SQL注入的风险,但我不打算深入讨论,因为这与您的问题没有直接关系。现在大多数PHP开发人员都在使用预处理语句来确保查询的安全性(因为运行查询的旧方式将被弃用).

当你直接对数据库运行该查询时会发生什么?请注意Steve的建议,避免使用
mysql\u query
。如果你继续使用它,你将积累大量必须解决的技术债务,加上你将养成各种不易改掉的坏习惯。你的效率最高吗这是一种编写不受SQL注入错误影响的正确查询的有效方法。请阅读我的@tadman
文章的第一行,在这里编辑其他人的代码,这样我就不能更改数据库中名为title的字段或更改为MySQLi等://
那么我希望这段代码中包含适当级别的
mysql\u real\u escape\u string
,因为这段代码中没有任何内容,这总是一个非常糟糕的迹象。当您直接对数据库运行该查询时会发生什么?请注意Steve的建议,以避免使用
mysql\u query
。如果您继续使用它,您将积累大量必须解决的技术债务,并且您将构建各种类型的查询不容易改掉的坏习惯。这是编写不受SQL注入错误影响的正确查询的最有效方法。请阅读我的文章@tadman
的第一行,在这里编辑其他人的代码,因此我不能更改数据库中名为title的字段或更改为MySQLi等://
然后我希望这段代码中包含appro提高mysql\u real\u escape\u string的级别,因为这段代码中没有任何内容,这总是一个非常糟糕的迹象。奇怪的是,我删除了单引号,它就工作了!奇怪!谢谢Steve!!:)你会使用反引号而不是单引号,例如“而不是”。奇怪的是,我删除了单引号,它就工作了!奇怪的谢谢史蒂夫!!:)对此,您将使用反勾号而不是单引号,即“而不是”。