php/mysql数据库搜索

php/mysql数据库搜索,php,mysql,Php,Mysql,有人知道为什么下面的代码不起作用吗?这是因为不推荐使用的sql语法吗?我被这个难住了 <?php mysql_connect("localhost",$username,$password); @mysql_select_db($database) or die( "Unable to select database"); $usersearch=$_POST['search']; $query="SELECT * FROM tracks WHERE 'artist' LIKE '%

有人知道为什么下面的代码不起作用吗?这是因为不推荐使用的sql语法吗?我被这个难住了

<?php
mysql_connect("localhost",$username,$password);  
@mysql_select_db($database) or die( "Unable to select database");

$usersearch=$_POST['search'];
$query="SELECT * FROM tracks WHERE 'artist' LIKE '%$usersearch%'";  
$result=mysql_query($query);

$num=mysql_numrows($result); 

mysql_close();

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo $row["artist"]." | ".$row["name"];
echo "<br>";

}  

?>

首先,请不要使用mysql。从PHP 5.5.0开始,此扩展已被弃用。


您可以先使用或。请不要使用mysql。从PHP 5.5.0开始,此扩展已被弃用。


您可以使用或。

添加到页面顶部:

 error_reporting(E_ALL);
 ini_set("display_errors", 1);
并在浏览器中打开该页。有什么错误吗

更改(这将使错误静音)

致:

不过有一点建议,最好使用or[PDO_MySQL][3]而不是
MySQL_connect
,因为它很快就会被弃用:

警告

从PHP5.5.0开始,此扩展已被弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答。此功能的替代方案包括:

mysqli_connect()

您可以在上找到有关如何使用它们的更多信息

更新

检查是否得到空结果,添加:

$num=mysql_numrows($result); 
if ($num === 0) echo "Empty result"
然后再次打开页面。如果页面仍然为空,请更改:

echo $row["artist"]." | ".$row["name"];
echo "<br>";
更新2

如果您确实得到
空结果
,则添加

echo $query;

然后尝试打开页面并手动运行查询

添加到页面顶部:

 error_reporting(E_ALL);
 ini_set("display_errors", 1);
并在浏览器中打开该页。有什么错误吗

更改(这将使错误静音)

致:

不过有一点建议,最好使用or[PDO_MySQL][3]而不是
MySQL_connect
,因为它很快就会被弃用:

警告

从PHP5.5.0开始,此扩展已被弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答。此功能的替代方案包括:

mysqli_connect()

您可以在上找到有关如何使用它们的更多信息

更新

检查是否得到空结果,添加:

$num=mysql_numrows($result); 
if ($num === 0) echo "Empty result"
然后再次打开页面。如果页面仍然为空,请更改:

echo $row["artist"]." | ".$row["name"];
echo "<br>";
更新2

如果您确实得到
空结果
,则添加

echo $query;

然后尝试打开页面并手动运行查询

可能是因为在选择表时有单引号('),而没有单引号。正如所指出的,不要使用mysql,不要使用PDO或mysqli,即使这只是一个学校项目(旧习惯很难改变)。你也可以加上

mysql_query($query) or die($mysql_error()); 
这可能会指出问题所在


最后,请转义动态输入变量

,这可能是因为在选择表时,您有单引号('),而不是'。正如所指出的,不要使用mysql,不要使用PDO或mysqli,即使这只是一个学校项目(旧习惯很难改变)。你也可以加上

mysql_query($query) or die($mysql_error()); 
这可能会指出问题所在



最后,请转义动态输入变量

什么不起作用?你检查过错误日志了吗?你会犯什么错误?您采取了哪些步骤来解决此问题?首先,不要使用“@”,这是一种不好的做法。另外,请指定您得到的输出。你试过打印吗;?上面说什么?最后,是的,mysql_u已经被弃用了,但它仍然有效,尽管John,这是一个学校项目——我知道它不起作用,因为当我在搜索框中键入数据库中列出的艺术家时,它只返回一个空白页。什么是错误日志?既然您找到了答案,请将其标记为已接受。谢谢!:)什么不起作用?你检查过错误日志了吗?你会犯什么错误?您采取了哪些步骤来解决此问题?首先,不要使用“@”,这是一种不好的做法。另外,请指定您得到的输出。你试过打印吗;?上面说什么?最后,是的,mysql_u已经被弃用了,但它仍然有效,尽管John,这是一个学校项目——我知道它不起作用,因为当我在搜索框中键入数据库中列出的艺术家时,它只返回一个空白页。什么是错误日志?既然您找到了答案,请将其标记为已接受。谢谢!:)谢谢,我已经做了更改-没有报告错误-只是一个白色屏幕,我不知道它在学校服务器上的php版本?我得到了一个返回的空结果?抱歉,我不明白,你得到了“空结果”吗?在Vardump之后仍然是空的谢谢,我已经做了更改-没有报告的错误-只是一个白色屏幕kuf,我不知道它在学校服务器上的哪个php版本?我得到了一个返回的空结果?抱歉,我不明白,你得到了“空结果”吗?vardumpsgulseth之后仍然是空的-你修复了它!!这是艺术家周围的引号-我已经把它们拿出来搜索了,非常感谢大家的建议。斯古尔塞思-你修复了它!!这是艺术家周围的引号-我已经把它们拿出来搜索了,非常感谢大家的建议。