mysql_fetch_array()给出错误

时间:2009-11-21 06:58:04

标签: mysql php

以下代码给出了错误:

  

警告: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>

3 个答案:

答案 0 :(得分:1)

通常,这意味着您的SQL出了问题。尝试回显sql以查看它是否正确。

(另外,在安全意义上直接传递GET变量作为查询是一个非常糟糕的主意 - 你只是要求一些恶意用户完全滥用开放并破坏你的数据库。)

答案 1 :(得分:1)

有几件事要尝试:

  1. 在mysql客户端内运行查询,100%确定它是正确的。如果它不会在客户端中执行,它将不会通过DBI执行。

  2. 在将查询传递给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);
    }
}