mysql查询SELECT不能与返回单个值一起使用

时间:2012-03-14 03:48:50

标签: php mysql row

我在写这篇文章之前找了一个答案但没有找到任何答案,但如果我错过了,可以随意发布一个链接。

我试图从我的mysql表的一行中获取值。我在下面使用的查询没有返回任何内容; mysql_num_rows的回显总是为零。我知道WHERE中使用的标题变量是有效的,数据库是连接的等等。感谢先进。

$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'];

6 个答案:

答案 0 :(得分:1)

尝试:

$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'];

答案 1 :(得分:1)

$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'];
  }

答案 2 :(得分:1)

如果mysql_num_rows返回零,则表示您的查询可能没有从数据库中选择任何内容。您必须检查您的SQL查询是否正在选择任何内容。检查$ title变量的值,并尝试直接将查询排除在数据库之外。

您也容易受到 sql注入的攻击。始终过滤用户输入。你可以使用mysql_real_escape_string和htmlspecialchars。

答案 3 :(得分:1)

尝试获取没有像这样的地方的值:

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

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

很多人已经说过但是尝试清理请求参数^ _ ^

答案 4 :(得分:0)

一个常见的事情是打印出你的SQL查询,以确保它符合你的期望。

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

另外,正如已经提到的那样......你很容易受到SQL注入攻击。

答案 5 :(得分:0)

你应该使用 while($ row = mysql_fetch_row($ query){...}并且还使用mysql_real_escape_string来避免sql注入。而且也不要使用mysql_num_rows的echo命令。甚至我认为没有必要获得执行剩余的行数脚本的一部分。

P.s我在手机上,所以我无法发布脚本。