Php 仅相当于一行的foreach循环
我有一个PHP函数,可以在SQL中运行SELECT查询: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
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,但不起作用