mysql_fetch_array () hatası veriyor

3 Cevap mysql

Aşağıdaki kod hata veriyor:

Warning: mysql_fetch_array (): verilen argüman W geçerli MySQL result resource değildir: hattında 22 \ Aptana \ workspace Web Sitesi \ lib \ filldropdown.php

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

Genellikle o şey sizin SQL ile yanlış olduğu anlamına gelir. Doğru göründüğünü görmek için sql dışarı yankılanan sahipsiniz.

(Ayrıca, bir sorgu olarak doğrudan bir GET değişkeni geçen bir güvenlik anlamında çok kötü bir fikir olduğunu - sadece tamamen açılmasını istismar ve veritabanı uzlaşma için bazı kötü niyetli bir kullanıcı için soruyorsun.)

Denemek için bir kaç şey:

  1. Doğru olduğundan% 100 emin olmak için, mysql istemci içinde sorguyu çalıştırın. Bu istemci yürütmek olmaz ise, bu DBI üzerinden yürütmez.

  2. Bu DBI iletilen önce sorguyu yazdırın. Genellikle bir şey garip alıntı olduğunu bulmak ve MySQL geçirmeden önce farklı kaçtı gerekmektedir olacak.

Tamam, sorun bulundu. GET herhangi bir değer almıyor. Aşağıda yukarıdaki PHP kod dosyasını aramak için kullanıyorum AJAX kodu:

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);
    }
}