我有一个在SQL中运行SELECT查询的PHP函数:
if(!function_exists("SelectQuery")) {
function SelectQuery ($sql) {
global $conn;
$SelectQuery = mysql_query($sql,$conn);
return $NumRows=mysql_num_rows($SelectQuery);
$SelectQuery_Results=array();
while($SelectQuery_Row = mysql_fetch_array($SelectQuery)) {
$SelectQuery_Results[] = $SelectQuery_Row;
}
return $SelectQuery_Results;
}
}
然后我在这里打电话:
$sql="SELECT * from tickets where ticketnumber = '".$_GET["seq"]."' ";
$ticket = SelectQuery($sql);
foreach($ticket as $ticket2) {
}
而不是使用foreach
循环我还能使用什么,因为我的查询只会返回一行而我不想将整个页面放在循环中
我尝试删除foreach
循环但是没有用
答案 0 :(得分:1)
只需将您的值设为$ticket[0]
。
答案 1 :(得分:0)
一个函数不能为单个调用返回两个值。所以,删除
return $NumRows=mysql_num_rows($SelectQuery);
您可以在结果中检查 数组 行数。
如果你想回显结果,下面的代码就可以了!
if( sizeof($ticket) > 1 ){
foreach($ticket as $ticket2){
for($i=0; $i<sizeof($ticket2)/2; $i++)
echo "[" . $ticket2[$i] . "]";
echo "<br />";
}
}
答案 2 :(得分:-1)
$ ticket是一个整数,请参阅:
return $NumRows=mysql_num_rows($SelectQuery);
所以你必须使用$ ticket。
如果你想要这行,在SelectQuery函数中删除这个无用的返回,并使用$ ticket [0]作为第一行和唯一一行。
用这个改变功能:
function SelectQuery ($sql) {
global $conn;
$SelectQuery = mysql_query($sql,$conn);
$NumRows=mysql_num_rows($SelectQuery);
$SelectQuery_Results=array();
if ($numRows>1) {
while($SelectQuery_Row = mysql_fetch_array($SelectQuery)) {
$SelectQuery_Results[] = $SelectQuery_Row;
}
}
else $SelectQuery_Results = mysql_fetch_array($SelectQuery);
return $SelectQuery_Results;
}
然后使用:
$sql="SELECT * from tickets where ticketnumber = '".$_GET["seq"]."' ";
$ticket = SelectQuery($sql);
if (is_array($ticket)) { foreach loop; }
else { use directly ticket['attribute'] }