Используйте SELECT COUNT (*), чтобы получить количество строк. В противном случае вы вернете фактические данные, которые расточительны. Посмотрите примеры PHP и PDO, чтобы узнать, как получить доступ к возвращенным значениям запроса.
аю окно входа в систему, и когда я подсчитываю количество строк, затронутых оператором SELECT для проверки учетной записи и пароля, у меня возникает проблема.
Ошибка: SQLSTATE [HY000]: общая ошибка: 1008 OCIStmtExecute: ORA-01008: привязаны не все переменные (ext \ pdo_oci \ oci_statement.c: 159)
Вот проблема (Я сделал это, потому что мне нужно подсчитать количество строк, когда я делаю SELECT. Все это для входа.)
Я нашел этот кусок кода на официальной странице PHP:Страница PHP ссылка (Пример № 2)
$resultado = $base->query($sql);
if ($resultado) {
/* Comprobar el número de filas que coinciden con la sentencia SELECT */
if ($resultado->fetchColumn() > 0) {
/* Ejecutar la sentencia SELECT real y trabajar con los resultados */
echo "<h2>Adelante!!</h2>";
}
/* No coincide ningua fila -- hacer algo en consecuencia */
else {
print "Ninguna fila coincide con la consulta.";
}
}
КОД:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
try
{
$base = new PDO('oci:dbname=localhost', 'hr', 'hr');
$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql= "SELECT * FROM DEPARTMENTS WHERE DEPARTMENT_ID=:login AND MANAGER_ID=:password";
$resultado = $base->prepare($sql);
$login = htmlentities(addslashes($_POST["login"]));
$password = htmlentities(addslashes($_POST["password"]));
$resultado->bindValue(":login", $login);
$resultado->bindValue(":password", $password);
$resultado->execute();
$resultado = $base->query($sql);
if ($resultado) {
if ($resultado->fetchColumn() > 0) {
echo "<h2>Adelante!!</h2>";
}
else {
print "Ninguna fila coincide con la consulta.";
}
}
}
catch(Exception $e)
{
die("Error: " .$e->getMessage());
}
?>
</body>
</html>