Php 对查询返回的行进行计数
当我使用oci_fetch_数组和count时,我得到22(我认为这意味着它得到了两行),这是错误的,它应该是11(11是列数),并且 当我使用oci_fetch_行时,我得到1,这是正确的。 谁能告诉我为什么会这样Php 对查询返回的行进行计数,php,oracle,Php,Oracle,当我使用oci_fetch_数组和count时,我得到22(我认为这意味着它得到了两行),这是错误的,它应该是11(11是列数),并且 当我使用oci_fetch_行时,我得到1,这是正确的。 谁能告诉我为什么会这样 $sql = "SELECT * FROM USERS WHERE USERNAME= :uname AND PWORD = :pword"; $stmt = oci_parse($c, $sql); $uname=$_POST['uname']; $pword=$_POST['
$sql = "SELECT * FROM USERS WHERE USERNAME= :uname AND PWORD = :pword";
$stmt = oci_parse($c, $sql);
$uname=$_POST['uname'];
$pword=$_POST['pword'];
oci_bind_by_name($stmt, ":uname",$uname);
oci_bind_by_name($stmt, ":pword",$pword);
oci_execute($stmt);
$res = oci_fetch_array($stmt);
$res2 = oci_fetch_row($stmt);
$num = count($res);
$num2 = count($res2);
echo $num . "<br/>";
echo $num2 . "<br/>";
$sql=“从用户名=:uname和PWORD=:PWORD的用户中选择*”;
$stmt=oci_parse($c,$sql);
$uname=$_POST['uname'];
$pword=$_POST['pword'];
oci按名称绑定($stmt,“:uname”,$uname);
oci按名称绑定($stmt,“:pword”,$pword);
oci_执行($stmt);
$res=oci\u fetch\u数组($stmt);
$res2=oci\u fetch\u行($stmt);
$num=计数($res);
$num2=计数($res2);
echo$num。“
”;
echo$num2。“
”;
根据,oci\u fetch\u数组的工作原理与之类似,因此您必须运行整个数组
这意味着,您只保存oci_fetch_数组中的第一行,而应该这样做
$sql = "SELECT * FROM USERS WHERE USERNAME= :uname AND PWORD = :pword";
$stmt = oci_parse($c, $sql);
$uname=$_POST['uname'];
$pword=$_POST['pword'];
oci_bind_by_name($stmt, ":uname",$uname);
oci_bind_by_name($stmt, ":pword",$pword);
oci_execute($stmt);
$data = array();
while($res = oci_fetch_array($stmt))
{
$data[] = $res;
}
$num = count($data);
echo $num . "<br/>";
$sql=“从用户名=:uname和PWORD=:PWORD的用户中选择*”;
$stmt=oci_parse($c,$sql);
$uname=$_POST['uname'];
$pword=$_POST['pword'];
oci按名称绑定($stmt,“:uname”,$uname);
oci按名称绑定($stmt,“:pword”,$pword);
oci_执行($stmt);
$data=array();
而($res=oci\u fetch\u数组($stmt))
{
$data[]=$res;
}
$num=计数($data);
echo$num。“
”;
oci_*库与php中的mysql_*没有太大区别
Fetch数组将返回与此类似的内容
Array(0 => "some_key" => "some_value")
as fetch assoc将返回的位置
Array("some_key" => "some_value")
我记不清了,但我确信这是你问题的根源。谢谢,我自己刚刚发现,它很有效,而且使用起来更简单,仍然不明白为什么我会以另一种方式得到一个正确答案和一个错误答案,但无论如何,再次感谢。这应该返回与你的
oci num\u行相同的结果,但这是一种效率极低的方法。@clonebaby59-我的印象是,到目前为止,你还没有理解你得到的两个答案,这两个答案都是正确的。您的代码没有得到正确的答案,因为它甚至没有得到行计数;它得到了一个列计数。