2010-08-25 97 views
1

可能重复:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL resultMySQL的:mysql_fetch_assoc():提供的参数不是一个有效的MySQL结果资源

我有这样的错误:

mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/marlon/domains/webmasterplaats.nl/public_html/edit.php on line 36 

这是代码:

<?php 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $toegang[] = '86.91.195.26'; 
    $toegang[] = '84.86.189.70'; 

    $valid = true; 
    if(in_array($ip, $toegang) || isset($valid)) 
    { 
if(isset($_GET['id'])) 
{ 
    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
    mysql_query("UPDATE news SET titel='" . mysql_real_escape_string($_POST['titel']) . "', inhoud='" . mysql_real_escape_string($_POST['edit2']) . "' WHERE id='" . mysql_real_escape_string($_GET['id']) . "'"); 

    echo 'Met success geupdate.' ; 
    } 
    $database = mysql_connect('localhost','marlonhe19','123456789asd'); 
    mysql_select_db('wmp', $database); 

    $id = $_GET['id']; 

    $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

    while($row = mysql_fetch_assoc($mysql)){ 
    $id = $row['id']; 
    $titel = $row['titel']; 
    $inhoud = $row['inhoud']; 

    echo ' 
    <form id="form1" name="form1" method="post" action=""> 
    <input type="text" name="titel" value="$titel" /><br /> 
    <textarea name="edit2">$inhoud</textarea> <br /> 
    <input type="submit" name="Submit" value="Opslaan" />'; 
    } 
    } 
    } 

有什么问题?

回答

3

警告:可能会发生SQL注入。 它看起来像你的查询失败。

替换此:

$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

有了:

$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;") or die(mysql_error()); 

你应该让自己的错误处理功能,这是prefferable显示错误消息,但不立即退出。

1

你不需要在分号(;):

$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

既然你传递一个;,查询执行失败,mysql_query回报false,而不是一个对象。当你通过falsemysql_fetch_assoc它会给出你所得到的错误。

始终添加错误检查:

$mysql = mysql_query("SELECT * FROM news WHERE id='$id'") or die(mysql_error()); 

看起来像你的数据库选择部分有问题。添加错误检查到藏汉:

编辑:

mysql_select_db('wmp', $database) or die(mysql_error()); 
+0

是啊,我现在有这样的: \t \t $的MySQL =请求mysql_query( “SELECT * FROM新闻WHERE ID = '$ ID'”); 但它仍然给错误。 – Andre 2010-08-25 17:14:08

+0

哦,我添加了或死的东西,它是“没有数据库选择”,但怎么可能呢,我从index.php复制连接的东西..它完全一样 – Andre 2010-08-25 17:15:23

+0

你确定你的'$ id'有正确的ID。 – codaddict 2010-08-25 17:15:32

0

您应该检查是否存在错误,如。

$news_result = mysql_query("SELECT * FROM news WHERE id='$id'") 
        or die("Query failed: ".mysql_error()); 

此外,您应该为您的查询结果的变量懂事的东西,即不$mysql,你应该使用绑定变量来防止SQL注入。考虑以下查询字符串:

page.php?id='+OR+'1'='1 
0

您是否尝试过从mysql提示符运行查询。 看起来像查询返回错误。 试着改变你的线

$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;") or die(mysql_error()); 
相关问题