PHP-HTML-ORACLE我在脚本上有错误

Hi guys i'm a beginner with php and html can u help me to solve this problem?

It gives me this error Warning: oci_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\login.php on line 15

this is my code :

<?php 
session_start();
// connect to database
if (isset($_POST['login_btn'])) {
    $username =$_POST['username'];
    $password =$_POST['password'];
    $conn = oci_connect('socialdb', '12345', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }
    $password = md5($password); // remember we hashed password before storing last time
    $sql = oci_parse($conn,"SELECT * FROM ACCOUNT WHERE username='$username' AND password='$password'");
    $result =oci_execute($sql);
    if (oci_num_rows($result) == 1) {
        $_SESSION['message'] = "You are now logged in";
        $_SESSION['username'] = $username;
        header("location: home.php"); //redirect to home page
    } else{
        $_SESSION['message'] = "Username/password combination incorrect";
    }
}
?>

UPDATE:Maybe the problem is in the HTML form :

<!DOCTYPE html>
<html>
<head>
    <title>Register, login and logout user php oracle</title>
    <link rel="stylesheet" type="text/css" href="stylea.css">
</head>
<body>
<div class="header"> 
    <h1>Register, login and logout user php oracle</h1>
</div>
<?php
    if (isset($_SESSION['message'])) {
        echo "<div id='error_msg'>".$_SESSION['message']."</div>";
        unset($_SESSION['message']);
    }
?>


<form method="post" action="login.php">
    <table>
        <tr>
            <td>Username:</td>
            <td><input type="text" name="username" class="textInput"></td>
        </tr>

        <tr>
            <td>Password:</td>
            <td><input type="password" name="password" class="textInput"></td>
        </tr>

        <tr>
            <td></td>
            <td><input type="submit" name="login_btn" value="Login"></td>
        </tr>
    </table>
</form>
</body>
</html>

Thank you and sorry for my bad english.

</div>
dongshan6870
dongshan6870 1我的表中只有一行,它的工作原理。
接近 4 年之前 回复
duan6832168
duan6832168 请先在db上检查你的sql“SELECT*FROMACCOUNTWHEREusername='$username'ANDpassword='$password'”。检查您是否获得了给定用户和密码的结果。或者你可能有超过1行的这个SQL。
接近 4 年之前 回复

1个回答



首先尝试检查查询结果的有效性,然后注意,因为oci_execute返回一个布尔值,请参阅此链接示例</ p>

  $ result  = oci_execute($ sql); 
if($ result){
if(oci_num_rows($ sql)== 1){
$ _SESSION ['message'] =“您现在已登录”;
$ _SESSION ['username'] = $ username;
header(“location:home.php”); //重定向到主页
} else {
$ _SESSION ['message'] =“用户名/密码组合不正确”;
}
}其他{
$ _SESSION ['message'] =“查询错误 “;
}
</ code> </ pre>
</ div>

展开原文

原文

Try to check query result validity first, then pay attention since oci_execute returns a boolean, refer to this link for an example

$result = oci_execute($sql);
if ($result) {
    if (oci_num_rows($sql) == 1) {
        $_SESSION['message'] = "You are now logged in";
        $_SESSION['username'] = $username;
        header("location: home.php"); //redirect to home page
    } else{
        $_SESSION['message'] = "Username/password combination incorrect";
    }
} else {
    $_SESSION['message'] = "Query error";
}

dongzhucha3999
dongzhucha3999 我不是在谈论在db上执行查询,你应该从php回应它。 所以你能回复oci_num_rows($ sql)的结果吗?
接近 4 年之前 回复
doujianzhi3358
doujianzhi3358 我试过,它给了我一排
接近 4 年之前 回复
dosrmo0442
dosrmo0442 请回显$ sql内容并发布
接近 4 年之前 回复
douzhuo2002
douzhuo2002 我确定我使用相同的变量,我的表中只有2行但是用户名不同。我使用html表单输入可能有问题吗?
接近 4 年之前 回复
dongqi7631
dongqi7631 你确定$ username和$ password变量内容是对的吗? 你确定oci_num_rows()没有返回一个> 1的数字吗?
接近 4 年之前 回复
dongliu8542
dongliu8542 现在它可以工作,但如果我插入正确的“用户名”和“密码”它给我他们不正确,你可以帮助我?:D我尝试选择形式的数据库,它的工作原理
接近 4 年之前 回复
dongyipa0028
dongyipa0028 我仍然有这个警告:oci_num_rows()期望参数1是资源,在第16行的C:\ xampp \ htdocs \ login.php中给出布尔值
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐