mysql查询SELECT没有';不适用于返回单个值


mysql query SELECT doesn't work with returning single values

在写这篇文章之前,我一直在寻找答案,但一无所获,但如果我错过了,可以随时发布链接。

我试图从mysql表的一行中获取值。我在下面使用的查询没有返回任何结果;mysqlnumrows的echo始终为零。我知道WHERE中使用的title变量是有效的,数据库是连接的,等等。提前感谢。

$title = $_REQUEST["title"];
$query = mysql_query("SELECT * FROM links WHERE title = '$title'");
if(!$query) {
    die ("Error: " . mysql_error());
}
echo mysql_num_rows($query);
$row = mysql_fetch_row($query);//also tried mysql_fetch_array
$link = $row['link'];
$type = $row['type'];
$user = $row['user'];
$date = $row['date'];
$rating = $row['rating'];
$info = $row['info'];

尝试使用:

$title = mysql_real_escape_string($_REQUEST["title"]);
$query = mysql_query("SELECT * FROM links WHERE title LIKE '$title'");
echo $query // run it in mysql prompt to check if there are any results first.
if(!$query) {
    die ("Error: " . mysql_error());
}
echo mysql_num_rows($query);
$row = mysql_fetch_row($query);//also tried mysql_fetch_array
$link = $row['link'];
$type = $row['type'];
$user = $row['user'];
$date = $row['date'];
$rating = $row['rating'];
$info = $row['info'];
$title = $_REQUEST["title"];
$query = mysql_query("SELECT * FROM links WHERE title = '$title'");
if(!$query) {
die ("Error: " . mysql_error());
}
echo mysql_num_rows($query);
while($row = mysql_fetch_row($query))
 { 
  $link = $row['link'];
    $type = $row['type'];
    $user = $row['user'];
    $date = $row['date'];
    $rating = $row['rating'];
    $info = $row['info'];
  }

如果mysql_num_rows返回零,则表示您的查询可能没有从数据库中选择任何内容。您必须检查您的sql查询是否实际选择了任何内容。请检查$title变量的值,然后尝试将查询直接追加到数据库中。

您还容易受到sql注入的攻击。始终筛选用户输入。为此,您可以使用mysql_real_eescape_string和htmlspecialchar。

尝试在没有where的情况下获取值,就像下面这样:

$query = mysql_query("SELECT * FROM links") or die(mysql_error());

如果有错误,它应该提示您错误。

许多人已经说过了,但试图清除请求参数^_^

一件常见的事情是打印出您的sql查询,以确保它符合您的期望。

$sqlquery = "SELECT * FROM links WHERE title='".$title."'";
$query = mysql_query($sqlquery);
echo $sqlquery; 

此外,正如已经提到的。。。您很容易受到SQL注入攻击。

您应该使用while($row=mysql_fetch_row($query){…},并且还使用mysql_real_sescape_string来避免sql注入。也不要在mysql_num_rows前面使用echo命令。甚至我也认为不需要获取行数来执行脚本的剩余部分。

附言:我在手机上,所以我不能发布脚本。

相关文章: