在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;
};
};
答案 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;
}
}