2013-12-18 57 views
0

我最近開始編寫程序以獲得樂趣,所以對於這個問題的解決方法很簡單。使用PHP顯示MySQL數據

我有一個客戶銷售門票存儲在它的MySQL表。我想要做的是獲取它,以便您可以細化下拉列表中顯示的故障單。我能夠從mysql表中填充下拉列表,但是當我單擊提交以篩選並顯示所選客戶名稱時。我得到以下錯誤: -

警告:mysqli_fetch_array()預計參數1被mysqli_result,在C定的boolean:\ XAMPP \ htdocs中\ result.php第16行

下面是兩個PHP的頁面我用。第一頁是填充下拉列表的地方。

<?php 
//db connection 
mysql_connect("********","********","********"); 
mysql_select_db("salesys"); 

//query 
$sql=mysql_query("SELECT DISTINCT CustomerName FROM ticket ORDER BY CustomerName ASC"); 
if(mysql_num_rows($sql)){ 

$select= '<select name="select">'; 
while($rs=mysql_fetch_array($sql)){ 
     $select.='<option value="'.$rs['CustomerName'].'">'.$rs['CustomerName'].'</option>'; 
    } 
} 

$select.='</select>'; 

?> 

<form name="input" action="result.php" method="POST"> 
<?php echo $select; ?> 
<input type="submit" value="Submit"> 
</form> 

下面是第二頁。

<?php 
$customerName = $_POST['select']; 
echo "Showing Results For: ", $customerName; 
echo "<BR>"; 
echo "<BR>"; 

$con=mysqli_connect("localhost","root","********","********"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$result = mysqli_query($con,"SELECT * FROM ticket WHERE CustomerName = $customerName"); 

while($row = mysqli_fetch_array($result)) 
    { 
    echo $row['TicketID'] . " | " . $row['CustomerName'] . " | " . $row['BriefDesc']; 
    echo "<br>"; 
    echo "<br>"; 
    } 

mysqli_close($con); 
?> 

任何幫助將不勝感激。

+0

使用準備語句mysqli的支持它 –

+3

你混合'mysql_'和'mysqli_'功能。如果可能,請堅持使用'mysqli'。 – sudee

回答

0

您必須在while($row = mysqli_fetch_array($result))之前檢查查詢是否正確,以幫助您調試代碼。

您可以檢查$result是否有效。請參見下面簡單的代碼(僅用於調試目的,因爲它不是安全地顯示在生產mysql的錯誤)

在你的情況下,誤差可能比$customerName是一個字符串,並且必須用引號

包圍
$customerName = '"'.mysqli_escape_string($con, $customerName).'"'; 
$result = mysqli_query($con, "SELECT * FROM ticket WHERE CustomerName = $customerName"); 
if (!$result) 
{ 
    echo mysqli_error(); 
} 

編輯:在生產,除非有需要的條件驗證,你不應該顯示錯誤。如果您的網站有一個登錄系統,你只能如果你(而不是其他任何人)中記錄的顯示錯誤。

+0

雖然不是很優雅,但這是對問題的恰當解釋。 – sudee

+0

爲什麼不讓它*已經*生產安全? –

+0

在生產中,不應顯示錯誤。但是你可以檢查一些條件(一個常數,一個cookie,任何東西或這個混合)來顯示只有授權人員的錯誤 – Asenar

1

如果您最近開始編程,您必須先學習如何編程。在您開始之前使用任何特定的語言或API。

基本程序員的能力之一是使用谷歌的技能。這並不困難:只需複製並粘貼您擁有的錯誤消息(不僅僅是這一個,但是您會得到的每一個錯誤)到Google搜索欄中。你會發現數百人已經面臨同樣的問題,並以某種方式解決它們。很可能你會找到答案。這是非常簡單但有幫助,但相當必不可少的

順便說一句,唯一正確的答案是在評論:使用準備好的語句