MySQL:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源

时间:2010-08-25 17:07:18

标签: php mysql

  

可能重复:
  Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result

我有这个错误:

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" />';
    }
    }
    }

有什么问题?

4 个答案:

答案 0 :(得分:3)

警告:可以进行SQL注入。 看起来您的查询失败了。

替换它:

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

使用:

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

你应该制作自己的错误处理函数,它可以显示错误信息,而不会立即退出。

答案 1 :(得分:1)

您在:

中不需要分号(;
$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;");

由于您传递;,查询执行失败,mysql_query返回false而不是对象。当您将false传递给mysql_fetch_assoc时,会出现您收到的错误。

始终添加错误检查:

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

您的数据库选择部分看起来有问题。添加错误检查以及:

修改

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

答案 2 :(得分: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

答案 3 :(得分:0)

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

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

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