PHP仅打印SQL查询结果的选择行
在PHP中,我很难从一个SQL查询结果中提取行数据。我需要的服务信息存储在一个名为$SelectedItems的数组中。下面的代码可以正常工作,但会打印包含所有行的整个表。我如何让它只打印1行呢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 =
$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值肯定来自用户输入;所以是的,他们也应该逃脱。哈哈,这是史诗般的失败。转义与用户输入无关。但只有在值周围加上引号。是的,使用内爆函数建议进行了处理。同时也感谢你的“真正的逃离”建议,这些建议也会派上用场!!