PHP仅打印选择SQL查询结果的行

时间:2010-09-07 12:55:22

标签: php mysql sql

在PHP中,我很难尝试从一个SQL查询结果中提取行数据。我需要的服务信息存储在名为$ SelectedItems的数组中。下面的代码可以正常工作,但打印所有行的整个表。我怎样才能简单地打印1行。

    $sql ="select blah blah"
    //Output result
    $result = mysql_query($sql);


    //Generate Information about Service or Product
    while($row = mysql_fetch_array($result))
      {
        if (in_array($row['Service_Name'], $SelectedItems)){
            print $row['Service_Description'];
            print $row['Service_Cost'];
        }
      };

我是PHP的新手,可能会以错误的方式解决这个问题,如果我回到前面,请告诉我。

$ SelectedItems从$ _POST数据处理,所需数据设置为数组

//Finds Out which services have been selected
foreach (array_keys($_POST) as $key) {
$$key = $_POST[$key];
    if ($$key == "1"){
        print "$key is ${$key}<br />";
        $SelectedItems[] = $key;
    };
};

2 个答案:

答案 0 :(得分:2)

最好在SQL查询中进行选择,而不是在PHP中进行选择:

$sql ="select blah blah
         from <table>
       where " Service_Name IN ('".implode("','",$SelectedItems)."');

OR

$sql ="select blah blah
         from <table>
       where " Service_Name = '".$SelectedItems[0]."');

这样,您可以让数据库执行最佳功能,减少数据库与PHP之间传输的数据量,并减少PHP代码。

答案 1 :(得分:1)

我看到这段代码中没有任何错误(但是我脑子里没有PHP解释器,因此我无法确定)。

无论如何,您必须开始使用实际数据调试代码 为什么不输出$row['Service_Name']$SelectedItems?使用var_dump()函数更好。 它可能是类型转换问题或丢失数据或任何东西。用自己的眼睛看实际数据总是有帮助

请注意您的第二个循环。这很奇怪也很危险 应该只是

foreach ($_POST as $key => $value) {
    if ($value == "1"){
        print "$key is $value<br />";
        $SelectedItems[] = $key;
    }
}