仅相当于一行的foreach循环

时间:2014-01-01 16:35:25

标签: php mysql sql foreach

我有一个在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循环但是没有用

3 个答案:

答案 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'] }