-1

何が起こっているのかわからない、エラーが発生し続けます。問題を非常に小さなテストケースに減らしました。以下を参照してください。


login.html

<form action="login.php" method="post">
    <input type="email" name="email" required />
    <input type="password" name="password" required />

    <input type="submit" value="Login"/>
</form>

login.php

$email    = $_POST["email"];
$password = sha1($_POST["password"]);

$stid2 = oci_parse($conn, 'SELECT EMAIL, PASSWORD FROM TUSERS where EMAIL =: email AND PASSWORD =: password');
oci_execute($stid2);

$nrows = oci_fetch($stid2);

print var_dump($nrows);

エラー

警告: oci_execute(): ORA-01008: 5 行目の login.php ですべての変数がバインドされているわけではありません

警告: oci_fetch(): ORA-24374: login.php の 7 行目 bool(false) でフェッチまたは実行およびフェッチの前に定義が行われていません

4

2 に答える 2

1

変数 $email および $password を oracle プレースホルダーにバインドする必要があります。oci_bind_by_nameを参照してください。また、プレースホルダーは と である必要が:emailあり:passwordます。コロン ( :) とプレースホルダー名 (emailおよびpassword) の間にスペースがあります。

于 2012-09-24T22:25:48.077 に答える
1

クエリに変数プレースホルダーを追加しましたが、それらに何もバインドしませんでした

$stid2 = oci_parse($conn, 'SELECT EMAIL, PASSWORD FROM TUSERS where EMAIL =:email AND PASSWORD =:password');
oci_bind_by_name($stid2, ':email', $email);
oci_bind_by_name($stid2, ':password', $password);
oci_execute($stid2);

oci_bind_by_nameを参照

于 2012-09-24T22:26:02.223 に答える