2012-02-11 131 views
0

Possible Duplicate:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL resultmysql_fetch_assoc很奇怪

好吧,这是我的代码。

<?php 

include 'connect.php'; 


$id = addslashes($_REQUEST['id']); 


$image = "SELECT * FROM images WHERE id=$id"; 
$result = mysql_query($image); 
$imagearray = mysql_fetch_assoc($result); 
$realimage = $imagearray['image']; 

header("Content-type: image/jpeg"); 

echo $realimage; 

?> 

页面使用GET来获取ID,但随后它给了我这个错误:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a6289454/public_html/get.php on line 9

+0

也许是因为你的查询没有返回结果/记录 – 2012-02-11 23:47:18

+0

@MuhammadAbrar即使是一个空表,也会从'mysql_query'返回一个有效的资源(这会导致'mysql_fetch_assoc'返回false)。该错误可能在查询中。 – 2012-02-12 00:11:38

回答

3

var_dump(mysql_error());将帮助您找到的错误消息。但最有可能的是,你需要引号:

$image = "SELECT * FROM `images` WHERE `id`='".$id."'"; 
+0

我还建议使用['mysql_real_escape_string'](http://www.php.net/manual/en/function.mysql-real-escape-string.php)代替'addslashes'。 – 2012-02-12 00:15:28

0

我想问题可能是和addslashes(),尝试mysql_real_escape_string()代替。

+0

都能跟得上IM仍然得到mysql_fetch_assoc():提供的参数不是在/home/a6289454/public_html/get.php一个有效的MySQL结果资源在第9行 – 2012-02-12 00:11:17

+0

没有理由逃避整数.. – Richard 2012-02-12 00:14:29

+0

当然,没有任何原因,如果逃跑呢它是一个整数,但你永远不知道它可能是什么,因为它来自GET。 – iDifferent 2012-02-12 00:21:51

0

你为什么要添加斜线$_REQUEST['id']?这应该是一个整数

试试这个代码:

if(is_numeric($_REQUEST['id'])){ 

    $q = "SELECT * FROM images WHERE id = " . $id; // Don't put variables in strings! 
    $rs= mysql_query($q) or die("There is an error in the query:<br>" . $q . "<br><br>The error is: ". mysql_error()); // Throw and error if there is one. 
    $result = mysql_fetch_assoc($rs); 

} else { die('Not a valid ID'); } 

也为良好的实践使用require_once('connect.php');而非include 'connect.php';

0
$image = "SELECT * FROM images WHERE id=$id"; 
$result = mysql_query($image) or die(mysql_error()); 

试一下

也为您的$ id使用类型转换这是一个简单的解决方案,以一个简单的问题

$id = (int) $_REQUEST['id'];