以下代码给出了错误:
警告:mysql_fetch_array():提供的参数不是第22行W:\ Aptana WorkSpace \ Website \ lib \ filldropdown.php中的有效MySQL结果资源
<?php
error_reporting(E_ALL ^ E_NOTICE);
$db_host = 'localhost:3306';
$db_username = 'superuser';
$db_password = 'admin';
$db_name = 'exampledb';
//connect to the database server
$connection = mysql_connect($db_host, $db_username, $db_password) or die(mysql_error());
//select database
$db = mysql_select_db($db_name, $connection);
$dropdownControlName = $_GET['DropDownControlName'];
$divName = $_GET['DivName'];
$sqlQuery = $_GET['SqlQuery'];
$result = mysql_query($sqlQuery);
?>
<select name=" <?php $dropdownControlName ?> ">
<option>Select Category</option>
<?php while($row=mysql_fetch_array($result))
{ ?>
<option value="<?= $row[0] ?>"><?= $row[1] ?></option>
<?php } ?>
</select>
答案 0 :(得分:1)
通常,这意味着您的SQL出了问题。尝试回显sql以查看它是否正确。
(另外,在安全意义上直接传递GET变量作为查询是一个非常糟糕的主意 - 你只是要求一些恶意用户完全滥用开放并破坏你的数据库。)
答案 1 :(得分:1)
有几件事要尝试:
在mysql客户端内运行查询,100%确定它是正确的。如果它不会在客户端中执行,它将不会通过DBI执行。
在将查询传递给DBI之前打印出来。通常,您会发现某些内容被奇怪地引用,并且在将其传递给MySQL之前需要进行不同的转义。
答案 2 :(得分:0)
好的,我发现了问题。 GET没有收到任何价值。下面是我用来调用上面的PHP代码文件的AJAX代码:
function MakeRequest(DivName, DropDownName, SqlQuery)
{
var xmlHttp = getXMLHttp();
var strUrl = "./lib/filldropdown.php?DivName = " + DivName + "&DropDownControlName = " + DropDownName + "&SqlQuery = " + SqlQuery;
try
{
xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4)
{
HandleResponse(xmlHttp.responseText, DivName);
}
}
xmlHttp.open("GET", strUrl, true);
xmlHttp.send(null);
}
catch(err)
{
alert(err);
}
}