任何人都可以看到为什么下面的代码不起作用?是不是因为不推荐使用的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>";
}
?>
答案 0 :(得分:4)
首先,请不要使用mysql_ *。自PHP 5.5.0起,该扩展已弃用。 http://php.net/manual/en/function.mysql-query.php
您可以使用mysqli_query()或PDO::query()。
答案 1 :(得分:1)
可能因为你选择你的桌子时有单引号(')而不是`。并指出不要使用mysql_ *使用PDO或mysqli,即使它只是一个学校项目(老习惯很难)。你也可以添加
mysql_query($query) or die($mysql_error());
这可能会指出什么是错的..
最后,请转义动态输入变量
答案 2 :(得分:0)
添加到页面顶部:
error_reporting(E_ALL);
ini_set("display_errors", 1);
并在浏览器中打开该页面。有什么错误吗?
更改(这会使错误无效)
@mysql_select_db($database) or die( "Unable to select database");
到:
mysql_select_db($database) or die( "Unable to select database");
尽管如此,最好使用MySQLi或[PDO_MySQL] [3]代替mysql_connect
,因为它很快就会被弃用:
警告强>
自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:
mysqli_connect()
您可以在this answer上找到有关如何使用它们的更多信息。
<强>更新强>
检查是否得到空结果,添加:
$num=mysql_numrows($result);
if ($num === 0) echo "Empty result"
再次打开页面。如果页面仍为空白,请更改:
echo $row["artist"]." | ".$row["name"];
echo "<br>";
为:
vardump($row);
更新2
如果您确实获得了Empty result
,那么请添加
echo $query;
并尝试打开页面并手动运行查询