可能重复:
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" />';
}
}
}
有什么问题?
答案 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());