2013-02-21 91 views
2

我一直在試圖找出是什麼導致這個錯誤,但由於某種原因。它只是不會顯示!持續警告:mysql_fetch_array()預計參數1是資源

它已經給我這樣的警告消息:

警告:mysql_fetch_array()預計參數1是資源,布爾在C中給出:\ XAMPP \ htdocs中\ EIS \上線64 usercp.inc.php

我試過使用mysql_error();但它沒有顯示任何東西。

這裏是我的代碼:

<?php 
$firstname = getuserfield('txtFname'); 
$lastname = getuserfield('txtLname'); 
echo 'Hello '.$firstname.' '.$lastname.'.<br/>'; 

$anotif = 0; 
$dnotif = 0; 
$anotif = $anotif + getuserfield('approved_notif'); 
$dnotif = $dnotif + getuserfield('disapproved_notif'); 
?> 
<h3>Notifications:</h3> 
Approved:<?php if($anotif<1){echo 0;} else { echo '<a href="?anotif">'.$anotif.'</a>';}?><br/> 
<?php 
if(isset($_GET['anotif'])) { 
    $query = "SELECT * FROM hrf_leave WHERE empid = '$empid' AND formStatus = 1 AND checked = 0"; 
    $query_run = mysql_query($query) or die($query."<br/><br/>".mysql_error()); 
    echo "<table border=1> 
    <tr> 
    <th>Type of Leave</th> 
    <th>Specific Reason</th> 
    <th>Date From</th> 
    <th>Date To</th> 
    <th>Number of Days</th> 
    </tr>"; 
    echo "<tr>"; 
    while($record = mysql_fetch_array($query_run)){ // <------- this is line 64 
     $leave_id = $record['leave_id']; 
     echo "<td>" . $record['type_of_leave'] . "</td>"; 
     echo "<td>" . $record['specific_reason'] . "</td>"; 
     echo "<td>" . $record['date_from'] . "</td>"; 
     echo "<td>" . $record['date_to'] . "</td>"; 
     echo "<td>" . $record['num_of_days'] . "</td>"; 
     echo "</tr>"; 
     $query = "UPDATE hrf_leave SET checked=1 WHERE leave_id = $leave_id"; 
     if($query_run = mysql_query($query)){ 
      $anotif = $anotif-1; 
      $query = "UPDATE hrf_leave SET approved_notif=$anotif WHERE empid = $empid"; 
      if($query_run = mysql_query($query)){ 
       echo 'Recently approved requests'; 
      } 
     } 
    } 
    echo "</table>"; 
} 
?> 
Disapproved:<?php if($dnotif<1){echo 0;} else { echo '<a href="?dnotif">'.$dnotif.'</a><br/>';} ?> 
<?php 
if(isset($_GET['dnotif'])) { 
    $query = "SELECT * FROM hrf_leave WHERE empid = '$empid' AND formStatus = 2 AND checked=0"; 
    $query_run = mysql_query($query); 
    echo "<table border=1> 
    <tr> 
    <th>Type of Leave</th> 
    <th>Specific Reason</th> 
    <th>Date From</th> 
    <th>Date To</th> 
    <th>Number of Days</th> 
    </tr>"; 
    echo "<tr>"; 
    while($record = mysql_fetch_array($query_run)){ 
     $leave_id = $record['leave_id']; 
     echo "<td>" . $record['type_of_leave'] . "</td>"; 
     echo "<td>" . $record['specific_reason'] . "</td>"; 
     echo "<td>" . $record['date_from'] . "</td>"; 
     echo "<td>" . $record['date_to'] . "</td>"; 
     echo "<td>" . $record['num_of_days'] . "</td>"; 
     echo "</tr>"; 
     $query = "UPDATE hrf_leave SET checked=1 WHERE leave_id = $leave_id"; 
     if($query_run = mysql_query($query)){ 
      $dnotif = $dnotif-1; 
      $query = "UPDATE hrf_leave SET disapproved_notif=$dnotif WHERE empid = $empid"; 
      if($query_run = mysql_query($query)){ 
       echo 'Recently disapproved requests'; 
      } 
     } 
    } 
    echo "</table>"; 
} 
?> 

反正,我一直在試圖輸出的請假單衛生組織檢查字段值= 0。一旦看出,系統將其設置爲1。一旦鏈接被點擊,所有批准和未批准的通知值都將等於零。

這是我的迷你通知系統。但我不能得到它,因爲這個錯誤的工作..:/

+0

可能重複的[mysql \ _fetch \ _array()期望參數1是資源,布爾給出在選擇](http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1資源布爾給定選擇) – igorw 2013-02-21 11:47:47

+0

可能是沒有返回。 – 2013-02-21 11:51:21

+0

@MartyWallace'register_globals'也許? : -/ – 2013-02-21 11:51:43

回答

5

在代碼的followind塊,變量$query_run,由產生該警告的代碼行中,被覆蓋:

$query = "UPDATE hrf_leave SET checked=1 WHERE leave_id = $leave_id"; 
    if($query_run = mysql_query($query)){ 
     $anotif = $anotif-1; 
     $query = "UPDATE hrf_leave SET approved_notif=$anotif WHERE empid = $empid"; 
     if($query_run = mysql_query($query)){ 
      echo 'Recently approved requests'; 
     } 
    } 

使用另一個變量名,因爲$query_run已經由主要mysql_fetch_array通話

+0

哦,讓我試試! – Tissue 2013-02-21 11:59:19

+0

不錯的觀察!它像一個魅力。以不同的方式重命名嵌套的query_runs。:) 謝謝! – Tissue 2013-02-21 12:02:21

+0

這是很好的一個。爲它+1 – 2013-02-21 12:06:52

0
$query = "SELECT * FROM hrf_leave WHERE empid = '".$empid."' AND formStatus = 1 AND checked = 0"; 
echo $query; 

然後運行在你的phpmyadmin這個查詢,你可以看到錯誤糾正。

您的查詢很容易被sql注入。

+0

我應該如何使它無懈可擊?我以爲mysql命令是貶值的,所以我把它們刪除了。 – Tissue 2013-02-21 11:53:35

+1

使用mysqli_ *函數或PDO,至少在你的情況下使用'mysql_real_escape_string' – 2013-02-21 11:55:56

+0

你好,讓我把這些命令放回去。我以爲他們真的貶值了。 這就是我得到的:你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「$查詢=「SELECT * FROM hrf_leave WHERE EMPID =」」。$ EMPID。​​第1行「'AND formStatus = 1‘ 這並未’ t真的告訴我任何具體的東西,真的有必要用phpmyadmin中的一個不存在的變量進行查詢嗎?請解釋一下。我在web開發中有點新鮮感 – Tissue 2013-02-21 11:57:45

相關問題