尝试在 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