Php 仅相当于一行的foreach循环

Php 仅相当于一行的foreach循环,php,mysql,sql,foreach,Php,Mysql,Sql,Foreach,我有一个PHP函数,可以在SQL中运行SELECT查询: if(!function_exists("SelectQuery")) { function SelectQuery ($sql) { global $conn; $SelectQuery = mysql_query($sql,$conn); return $NumRows=mysql_num_rows($SelectQuery); $SelectQuery_Resu

我有一个PHP函数,可以在SQL中运行SELECT查询:

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循环,但没有成功

只需访问$ticket[0]的值即可。

$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'] }

函数不能为单个调用返回两个值。所以,移除

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 />";
    }
}

$ticket[0][…]。。。?!此外,您的函数不应该返回任何结果,只返回行计数。您还容易受到SQL注入的攻击。对于用户来说没有任何能力input@charlie高度怀疑听起来有些不确定性,而这正是黑客拥有整个服务器/网络所需要的。还有那个控制面板!如果这个控制面板不安全,我会非常小心地控制它。那么当我调用我的函数时,我需要什么呢。只需使用$ticket=SelectQuery$sql;然后echo$ticket[column1];依此类推?否,因为SelectQuery以数组形式返回行,即使只有一行,因为函数中的while。使用$ticket[0];但是删除无用的first Return,那么调用函数时如何回显数据库结果呢?使用$ticket2=$ticket[0];echo$ticket2['column1'];或者看看我编辑过的答案好吧,我的回答是$ticket=SelectQuery$sql;和$ticket=$ticket[0];如何回显mysql\u num\u行-我尝试了mysql\u num\u rows$ticket,但不起作用