2009-11-21 3 views
0

Следующий код дает ошибку:mysql_fetch_array() дает ошибку

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in W:\Aptana WorkSpace\Website\lib\filldropdown.php on line 22

<?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

Связанный: [mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический дан в выберите] (http://stackoverflow.com/ Вопросы/2973202/mysql-fetch-array-expects-parameter-1-to-be-resource-boolean-given-in-select) – hakre

ответ

1

Обычно это означает, что что-то не так с вашим SQL. Попробуйте повторить sql, чтобы убедиться, что он выглядит правильно.

(Также, передавая переменную GET непосредственно в качестве запроса является очень плохой идеей в смысле безопасности - вы просто просите какой-то злоумышленник, чтобы полностью злоупотребляйте открытие и скомпрометировать вашу базу данных.)

+0

В настоящее время это просто для тестирования выпадающего списка. Улучшит его. – RKh

1

Несколько вещей, чтобы попробовать:

  1. Запустить запрос внутри клиента mysql, чтобы быть на 100% уверенным, что он правильный. Если он не будет выполняться в клиенте, он не будет выполняться через DBI.

  2. Распечатайте запрос перед его передачей в DBI. Часто вы обнаружите, что что-то цитируется странно и нужно избегать иначе, прежде чем передавать его в MySQL.

+0

Я пытаюсь echo ($ sqlQuery), но на экране ничего не отображается. Вероятно, он скрывается за формой HTML. – RKh

0

Хорошо, я нашел проблему. GET не получает никакой ценности. Ниже приведен код AJAX, который я использую для вызова выше PHP файл с кодом:

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); 
    } 
} 
Смежные вопросы