подсчет строк, возвращаемых из запроса - PullRequest
1 голос
/ 01 декабря 2011

когда я использую oci_fetch_array и считаю, я получаю 22 (что, я думаю, означает получение двух строк), что неверно, это должно быть 11 (11 - это число столбцов) и когда я использую oci_fetch_row, я получаю 1, что правильно. Может кто-нибудь сказать мне, почему это происходит?

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

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

В соответствии с документами , oci_fetch_array работает так же, как mysql_fetch_array , поэтому вам нужно пройти через массив.

Это означает, что вы сохраняете только свою первую строку в своем oci_fetch_array, вместо этого вы должны сделать это

$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/>";
1 голос
/ 01 декабря 2011

Библиотека oci_ * не слишком отличается от mysql_ * в php.

Массив Fetch вернет что-то похожее на это

Array(0 => "some_key" => "some_value")

Где в качестве выборки будет возвращено

Array("some_key" => "some_value")

Я не могу вспомнить полностью, но я уверен, что это корень вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...