2013-04-17 110 views
0

我有一個頁面,用戶可以選擇多個複選框,然後提交表單,在下一頁顯示他們檢查了更多細節。但我的查詢不起作用。我怎麼能通過複選框數據到MySQL查詢來獲取其餘的數據。MYSQL查詢在哪裏php數組

這是我的查詢:

$c=$_POST['select']; 

$result=mysqli_query($con, 'SELECT * FROM item WHERE item_number IN ("'.implode('","', $c).'")'); 

echo "<table border='1'> 
<tr> 
<th>item name</th> 
<th>item number</th> 
</tr>"; 
while($row = mysqli_fetch_array($result)) 
{ 
    echo "<tr>"; 
    echo "<td>" . $row['item_name'] . "</td>"; 
    echo "<td>" . $row['item_number'] . "</td>"; 
    echo "</tr>"; 
} 
    echo "</table>"; 


mysqli_close($con); 

當運行查詢我得到這個錯誤:

警告:mysqli_fetch_array()預計參數1被mysqli_result,布爾給

它沒有返回結果,但如果我回聲查詢並複製粘貼到MySQL我得到的結果,但從PHP運行時我只得到錯誤。

任何幫助,將不勝感激

+0

爲什麼它不起作用?你從數據庫或從網絡服務器得到的錯誤是什麼? –

+1

什麼是$ c?另外,你應該通過運行mysqli_real_escape_string() – Seth

+0

改變implode('','',$ c)implode(',',$ c)的所有值來保護你的數據庫 –

回答

-4

$ C並不似乎是PHP的數組,所以它不能在這裏被引爆

+1

的有效連接「如果我回顯(」'.implode('「,」',$ c)。「」)我得到值「 –

+0

什麼樣的數據類型你從$ _POST ['選擇'] - 有效的PHP數組或蜇? – Ilya

+0

是的,它會打印出我從表單中選擇的所有值,如果我回顯它。 –

0

更新你的代碼的版本放出來的錯誤消息的查詢是否有一個。同時對輸入進行淨化處理

<?php 
if (is_array($_POST['select'])) 
{ 
    $c = array_map('array_map_callback', $_POST['select']); 

    $result = mysqli_query($con, 'SELECT item_name, item_number FROM item WHERE item_number IN ("'.implode('","', $c).'")') OR die(mysqli_error($con)); 

    echo "<table border='1'> 
    <tr> 
    <th>item name</th> 
    <th>item number</th> 
    </tr>"; 
    while($row = mysqli_fetch_array($result)) 
    { 
     echo "<tr>"; 
     echo "<td>" . $row['item_name'] . "</td>"; 
     echo "<td>" . $row['item_number'] . "</td>"; 
     echo "</tr>"; 
    } 
    echo "</table>"; 
    mysqli_close($con); 
} 
else 
{ 
    echo "No items selected"; 
} 

function array_map_callback($a) 
{ 
    global $con; 
    return mysqli_real_escape_string($con, $a); 
} 

?> 

希望這應該將查詢的錯誤信息放出。