-1

不知道发生了什么,我不断收到错误。我已将问题简化为一个很小的测试用例,见下文:


登录.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>

登录.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: 在第 7 行的 login.php 中获取或执行和获取之前定义未完成 bool(false)

4

2 回答 2

1

您需要将变量 $email 和 $password 绑定到 oracle 占位符。见oci_bind_by_name。此外,占位符应该是:emailand :password:冒号 ( ) 和占位符名称 ( emailand )之间有一个空格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 回答