2012-01-10 120 views
1

Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select警告:mysql_fetch_array()預計參數1是資源,空給出。

我想學習如何正確使用AJAX與PHP和MySQL。我已經看到了這個網站對於我的工作同樣的例子其他人的職位,但我還沒有看到我有同樣的問題任何事情。

該網站保持的源代碼是PHP - AJAX and PHP
我有我的託管代碼的網站是here

第一個環節都有工作例和第二鏈接顯示你我試圖找出錯誤。

我試過使用mysqli,但它說了一些關於期待兩個參數的內容,所以我將它改回來了。如果任何人有關於如何使其起作用的建議,我將不勝感激。

錯誤:mysql_fetch_array()預計參數1是資源,在/data/multiserv/users/748953/projects/1801445/www/test/getuser.php空給出上線24

的HTML代碼:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8"> 
<title>Ajax-PHP/MySQL Cooperation Test</title> 
<script type="text/javascript"> 
    function showUser(str) 
     { 
      if (str=="") 
       { 
        document.getElementById("txtHint").innerHTML=""; 
        return; 
       } 
      if (window.XMLHttpRequest) 
       {// code for IE7+, Firefox, Chrome, Opera, Safari 
        xmlhttp=new XMLHttpRequest(); 
       } 
      else 
       {// code for IE6, IE5 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
      xmlhttp.onreadystatechange=function() 
       { 
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
         { 
          document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
         } 
       } 
      xmlhttp.open("GET","getuser.php?q="+str,true); 
      xmlhttp.send(); 
     } 
</script> 
</head> 
<body> 

<form> 
<select name="users" onchange="showUser(this.value)"> 
<option value="">Select a person:</option> 
<option value="1">Peter Griffin</option> 
<option value="2">Lois Griffin</option> 
<option value="3">Glenn Quagmire</option> 
<option value="4">Joseph Swanson</option> 
</select> 
</form> 
<br /> 
<div id="txtHint">Person info will be listed here.</div> 
</body> 
</html> 

PHP:

<?php 
$q=$_GET["q"]; 

include("dbinfo.inc.php"); 
$con = mysql_connect(localhost, $username, $password); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db($database, $con); 

$resul1 = mysql_query('SELECT * FROM `ajax_demo` WHERE id = \'\".$q.\"\'') or die(mysql_error()); 

echo "<table border='1'> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Age</th> 
<th>Hometown</th> 
<th>Job</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
echo "<tr>"; 
echo "<td>" . $row['FirstName'] . "</td>"; 
echo "<td>" . $row['LastName'] . "</td>"; 
echo "<td>" . $row['Age'] . "</td>"; 
echo "<td>" . $row['Hometown'] . "</td>"; 
echo "<td>" . $row['Job'] . "</td>"; 
echo "</tr>"; 
} 
echo "</table>"; 

mysql_close($con); 
?> 
+4

難道是錯字嗎? $ resul1 = ...然後fetch_array($ result) – Sverker84 2012-01-10 07:35:47

+4

請在開發中使用'error_reporting(E_ALL)',你會發現錯字和undefined變量。 – 2012-01-10 07:37:49

+0

我正在試驗爲什麼結果沒有出現,我發現這是一個建議的解決方案。這是一個錯字,因爲我沒有改變一切,但結果仍然沒有顯示,我不知道爲什麼。感謝您指出了這一點。 – 2012-01-10 14:14:06

回答

1

第一次嘗試檢查$q

的數據,之後嘗試與此查詢:

mysql_query("SELECT * FROM `ajax_demo` 
      WHERE id = '" . mysql_real_escape_string($q) ."'"); 
+0

錯誤代碼的問題是一個錯字,但你的第二個代碼完全解決了我的問題!我無法弄清楚爲什麼數據不會顯示,但無論出於何種原因,我猜我的MySQL版本的編碼需要mysql_real_escape_string($ q)而不是。$ q。所以謝謝! – 2012-01-10 15:41:34

2

你有拼寫錯誤,你在$resul1分配值,並使用mysql_fetch_array($結果)通知$result

+0

這是一個錯字。感謝您指出了這一點。 – 2012-01-10 14:14:21

0

變化$resul1$result1,你沒寫錯那裏。

+0

除了它應該只有$結果,如果你看其他代碼... – Sverker84 2012-01-10 07:39:37

+0

這是一個錯字。感謝您指出了這一點。 – 2012-01-10 14:14:46

0

改變你的while語句變成這樣:

while($row = mysql_fetch_array($result1)) 

編輯:

確保始終檢查您的代碼並始終使用一致的命名約定,服務器指出的錯誤已經足以檢測問題發生在程序的哪一部分(如果你想爲你的開發服務器設置一個完整的調試設置,則不需要運行任何其他功能)文件,而不是在應用程序本身上執行它,但出於安全目的將其關閉用於實時服務器)。

「錯誤:mysql_fetch_array()預計參數1是資源,在/data/multiserv/users/748953/projects/1801445/www/test/getuser.php空給定在線路24」

這意味着錯誤發生在文件「/data/multiserv/users/748953/projects/1801445/www/test/getuser.php」的第24行上,並且您在函數「mysql_fetch_array」上使用的第一個參數上的變量是由於語句「期望參數1是資源」而導致問題的原因,因此您應該直接轉到該錯誤指向的程序的哪一部分,這對任何程序員都有幫助。;)

+0

感謝您的洞察力。我似乎無法準確理解錯誤消息的含義。你認爲有辦法讓它報告錯誤信息和數字嗎? – 2012-01-10 14:16:25

+0

沒問題。對於你的問題,錯誤消息消息已經被服務器返回,表明「mysql_fetch_array()期望參數1是資源」,錯誤的下一部分指向哪個文件出現,如「/ data/multiserv/users/748953/projects/1801445/www/test/getuser.php「,下一條語句將聲明它出現在哪個行號,如」在線24「,這個詳細信息會更容易跟蹤哪部分該程序導致該問題,您可以根據需要查看代碼。 – 2012-01-10 22:57:58

0

你有一個拼寫錯誤,你在$resul1中分配值,並使用mysql_fetch_array($result)通知$result

+0

謝謝。這是錯誤的問題。 – 2012-01-10 15:31:09

相關問題