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!!:)你会使用反引号而不是单引号,例如“而不是”。奇怪的是,我删除了单引号,它就工作了!奇怪的谢谢史蒂夫!!:)对此,您将使用反勾号而不是单引号,即“而不是”。