php / mysql数据库搜索

时间:2013-02-27 15:13:37

标签: 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 '%$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>";

}  

?>

3 个答案:

答案 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;

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