尝试在 php 中连接数据库,但出现语法错误

Posted

技术标签:

【中文标题】尝试在 php 中连接数据库,但出现语法错误【英文标题】:Trying to connect a database in php, but get syntax error 【发布时间】:2020-08-22 01:45:37 【问题描述】:

我正在尝试使用我在 phpMyAdmin 中创建的数据库创建登录页面,但每次运行它时,我都会在 login.php 的第 2 行收到语法错误,我不知道为什么它不起作用。我确定我正确输入了代码。当我运行它时,我得到一个错误:

解析错误:语法错误,第 2 行的 login.php 中出现意外的 ':'

登录.php

<?php
    $dsn = 'mysql:host=localhost;dbname=dbase';
    $username = 'user1';
    $password = 'pass';

    $error = "";

    try
        $db = new PDO ($dsn, $username, $password);
    

    catch (PDOException $e)
        $error = $e->getMessage();
    
// end of database connect

    $user = $_POST['user'];
    $pass = $_POST['pass'];

    $query = 'SELECT * FROM users WHERE user = :user AND pass = :pass';

    $statement = $db->prepare($query);
    $statement->bindValue(':user', $user);
    $statement->bindValue(':pass', $pass);
    $statement->execute();
    $valid = ($statement->rowCount() == 1);
    $result = $statement->fetch();
    $statement->closeCursor();

    if ($valid)
        $greeting = $result['email'];
        $permit = ", login success";
    

    else
        $greeting = $user;
        $permit = ", invalid credentials";
    

?>
<!DOCTYPE html>

<html>
    <head>
        <title>Scheduler</title>
    </head>

    <body>
        <h1><?php echo $greeting.$permit; ?></h1>
    </body>
</html>

登录页面.php

<html>
    <head>
        <title>Scheduler</title>
    </head>

    <body>
        <form action = 'login.php' method = "post">
            <h1>EZ-Scheduler</h1>

            <h2>Please login to view rosters</h2>

            <table>
                <tr>
                    <td>Username:</td>
                    <td><input name = "user" type = "text" size = "25"></td>    
                </tr>
                <tr>
                </tr>   
                <tr>
                    <td>Password:</td>
                    <td><input name = "pass" type = "password" size = "25"></td>
                </tr>
            </table>    
                <p><input type = "submit" name = "button" value = "Login"></p>
            </table>
        </form>
    </body>
</html>

【问题讨论】:

请参考:***.com/questions/18050071/… o 在您的代码中看不到 qany 错误,第一次 gnace 但从不在数据库中存储密码使用散列参见 php.net/manual/en/book.password.php 第 2 行似乎是将字符串文字分配给变量; php 认为单引号字符串文字中的冒号字符是语法错误似乎一点也不合理。这里只是猜测,但我的猜测是这里发布的代码块与PHP解释器正在读取的代码不同。 【参考方案1】:

试试这个东西看看

<?php
    $username = 'user1';
    $password = 'pass';

    $error = "";

    try
        $db = new PDO ('mysql:host=localhost;dbname=dbase', $username, $password);
    

    catch (PDOException $e)
        $error = $e->getMessage();
    
// end of database connect

【讨论】:

我解决了我的问题。谢谢。

以上是关于尝试在 php 中连接数据库,但出现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

连接失败:SQLSTATE [42000]:语法错误或访问冲突:1064

apns没有在php中连接

LEFT JOIN连接SQL语句在Access里面报语法错误(操作符丢失),哪位帮帮忙?

使用 Doctrine2 连接表

mysql连接数过多解决方案

mysql连接数过多 解决方案