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

PHP仅打印SQL查询结果的选择行,php,mysql,sql,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 =

在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很陌生,可能会用错误的方式来处理这个问题,请让我知道,如果我是回到前面lol

$SelectedItems是从$\u 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;
    };
};
//查找已选择的服务
foreach(数组\u键($\u POST)作为$key){
$$key=$\u POST[$key];
如果($$key==“1”){
打印“$key是${$key}
”; $SelectedItems[]=$key; }; };
我一眼就能看出这段代码中没有错误(但是我脑子里没有PHP解释器,所以我不能确定)

无论如何,您必须开始用实际数据调试代码。
为什么不同时输出
$row['Service\u Name']
$SelectedItems
?最好使用
var\u dump()
函数。 它可以是类型转换问题或缺少数据或任何内容。用自己的眼睛观察实际数据总是有帮助的

只需在第二个循环中添加旁注。这既奇怪又危险。
应该是公正的

foreach ($_POST as $key => $value) {
    if ($value == "1"){
        print "$key is $value<br />";
        $SelectedItems[] = $key;
    }
}
foreach($\u发布为$key=>$value){
如果($value==“1”){
打印“$key是$value
”; $SelectedItems[]=$key; } }
我一眼就能看出这段代码中没有错误(但是我脑子里没有PHP解释器,所以我不能确定)

无论如何,您必须开始用实际数据调试代码。
为什么不同时输出
$row['Service\u Name']
$SelectedItems
?最好使用
var\u dump()
函数。 它可以是类型转换问题或缺少数据或任何内容。用自己的眼睛观察实际数据总是有帮助的

只需在第二个循环中添加旁注。这既奇怪又危险。
应该是公正的

foreach ($_POST as $key => $value) {
    if ($value == "1"){
        print "$key is $value<br />";
        $SelectedItems[] = $key;
    }
}
foreach($\u发布为$key=>$value){
如果($value==“1”){
打印“$key是$value
”; $SelectedItems[]=$key; } }
在SQL查询中进行选择比在PHP中进行选择更好:

$sql ="select blah blah
         from <table>
       where " Service_Name IN ('".implode("','",$SelectedItems)."');
$sql=“选择废话废话
从…起
其中“Service_Name IN(”。内爆(“,”,$SelectedItems)。”);

$sql=“选择废话废话
从…起
其中“服务名称=”$SelectedItems[0]。”);

这样,您就可以让数据库做它最擅长的事情,减少数据库和PHP之间传输的数据量,并减少PHP代码。

在SQL查询中进行选择比在PHP中更好:

$sql ="select blah blah
         from <table>
       where " Service_Name IN ('".implode("','",$SelectedItems)."');
$sql=“选择废话废话
从…起
其中“Service_Name IN(”。内爆(“,”,$SelectedItems)。”);

$sql=“选择废话废话
从…起
其中“服务名称=”$SelectedItems[0]。”);

这样,您就可以让数据库做它最擅长的事情,减少数据库和PHP之间传输的数据量,并减少PHP代码。

好的一点,尽管我会加入一个带有mysql的数组映射。\u real\u escape string我从OP的编辑中看到,$SelectedItems值肯定来自用户输入;所以是的,他们也应该逃脱。哈哈,这是史诗般的失败。转义与用户输入无关。但只有在值周围加上引号。是的,使用内爆函数建议进行了处理。同时也感谢你的“真正的逃离”建议,这些建议也会派上用场!!很好的一点,尽管我会加入一个带有mysql\u real\u escape string的数组映射,但我从OP的编辑中看到,$SelectedItems值肯定来自用户输入;所以是的,他们也应该逃脱。哈哈,这是史诗般的失败。转义与用户输入无关。但只有在值周围加上引号。是的,使用内爆函数建议进行了处理。同时也感谢你的“真正的逃离”建议,这些建议也会派上用场!!