首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL: mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源

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

Stack Overflow用户
提问于 2010-08-25 17:07:17
回答 4查看 767关注 0票数 1

可能重复:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result

我有个窃听器:

代码语言:javascript
复制
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

这是代码:

代码语言:javascript
复制
    <?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" />';
    }
    }
    }

有什么问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-25 17:09:45

警告: SQL注入可能。看来您的查询失败了。

代之以:

代码语言:javascript
复制
$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;");

通过以下方式:

代码语言:javascript
复制
$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;") or die(mysql_error());

您应该创建自己的错误处理函数,在不立即退出的情况下显示错误消息是可能的。

票数 3
EN

Stack Overflow用户

发布于 2010-08-25 17:10:37

您不需要使用分号(;):

代码语言:javascript
复制
$mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;");

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

始终添加错误检查:

代码语言:javascript
复制
$mysql = mysql_query("SELECT * FROM news WHERE id='$id'") or die(mysql_error());

看来您的DB选择部分有问题。在此基础上添加错误检查:

编辑:

代码语言:javascript
复制
mysql_select_db('wmp', $database) or die(mysql_error());
票数 1
EN

Stack Overflow用户

发布于 2010-08-25 17:15:08

你应该检查一下是否有错误。

代码语言:javascript
复制
$news_result = mysql_query("SELECT * FROM news WHERE id='$id'")
                   or die("Query failed: ".mysql_error());

此外,您应该将查询结果变量命名为合理的变量,即不命名为$mysql,并且应该使用绑定变量来防止SQL注入。考虑以下查询字符串:

代码语言:javascript
复制
page.php?id='+OR+'1'='1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3568478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档