2012-05-10 120 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 />"; 
} 

在那个笔记上。你应该真的把你的表称为别的东西,比如产品不仅仅是“服务器”,除非服务器是指你的桌子上充满了服务员或计算机硬件的实例。