2012-05-10 94 views
-2

我試圖編碼一個數組,顯示一組特定的產品,具體取決於登錄用戶的性別。數組並不是真正的問題,但是我將不得不檢查數據庫的部分,然後從結果創建條件語句是我認爲的主要問題。條件數組

這裏是我的代碼:

<?php 

include"config.php" or die "cannot connect to server"; 

$gender=$_POST['gender']; 



    $qry ="SELECT * FROM server WHERE gender ='$gender'"; 
    $result = mysql_query($qry); 


    $productdetails; 
    $productdetails1["Product1"] = "£8"; 
    $productdetails1["Product2"] = "£6"; 
    $productdetails1["Product3"] = "£5"; 
    $productdetails1["Product4"] = "£6"; 
    $productdetails1["Product5"] = "£4"; 
    $productdetails2["Product6"] = "£8"; 
    $productdetails2["Product7"] = "£6"; 
    $productdetails2["Product8"] = "£5"; 
    $productdetails2["Product9"] = "£6"; 
    $productdetails2["Product10"] = "£4"; 

     if (mysql_num_rows($result) = 1) { 
     foreach($productdetails1 as $key => $value){ 
      echo "Product: $key, Price: $value <br />"; 
      } 
     }     
     else { 
     foreach($productdetails2 as $key => $value) { 
      echo "Product: $key, Price: $value <br />"; 
      } 
     } 
?> 
+5

性別應在sql查詢中使用之前進行消毒。這只是要求注射。 – Blake

+7

問題到底是什麼?你得到的輸出是什麼?用哪個輸入?你必須更具體一點,只是說「我有這個問題」並沒有太多的工作。由於我們甚至無法運行代碼(我們沒有數據庫),所以您必須提供更多信息。 –

+0

確切的問題是,當我嘗試執行代碼時,收到消息「致命錯誤:無法在第65行的F:\ xampp \ htdocs \ account.php中的寫入上下文中使用函數返回值」。 – northmanWebber

回答

2

你如果說法是錯誤的。 =是一個賦值操作符,您應該使用comparison operator類似=====

0

當前代碼會發生什麼?

一些提示: 首先嚐試回顯$ gender,以確保它正在通過。它通過郵寄提交,如果沒有發佈什麼內容會發生什麼?這是從哪裏來的?你應該嘗試使用get來代替。這似乎是你給某人一個鏈接的東西,因此後期在這裏沒有意義。你可以一直都有,如果它存在,只需要發帖,否則根據你的觀衆使用否則默認爲'男'或'女'。

接下來,什麼是您的查詢輸出?如果性別不回饋任何東西,這一點可能是空的。看起來你正在查詢所有行,其中性別=任何被傳遞的行,但是那麼你的if語句要求有什麼返回?然後你所做的全部都是數組,但你不應該這樣做,你應該輸出你從數據庫中得到的東西。假設你的表中確實有產品叫做服務器,你應該這樣做:

$products = mysql_query("SELECT * FROM server WHERE gender ='$gender"); 

while($product = mysql_fetch_array($products)){ 
    echo $product['name'] . " " . $product['price']. " " . $product['gender']; 
    echo "<br />"; 
} 

在那個筆記上。你應該真的把你的表稱爲別的東西,比如產品不僅僅是「服務器」,除非服務器是指你的桌子上充滿了服務員或計算機硬件的實例。