0

谁能看到为什么下面的代码不起作用?是因为不推荐使用的 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>";

}  

?>
4

3 回答 3

4

首先,请不要使用 mysql_*。此扩展自 PHP 5.5.0 起已弃用。 http://php.net/manual/en/function.mysql-query.php

您可以使用mysqli_query()PDO::query()

于 2013-02-27T15:15:31.580 回答
1

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

mysql_query($query) or die($mysql_error()); 

这可能会指出什么是错的..

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

于 2013-02-27T15:43:13.270 回答
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()

您可以在此答案中找到有关如何使用它们的更多信息。

更新

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

$num=mysql_numrows($result); 
if ($num === 0) echo "Empty result"

并再次打开页面。如果页面仍然是空白,请更改:

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

至:

vardump($row);

更新 2

如果你确实得到Empty result了,那么添加

echo $query;

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

于 2013-02-27T15:17:12.980 回答