【发布时间】:2017-05-01 02:00:45
【问题描述】:
这是我在运行以下代码时收到的错误代码!
致命错误:未捕获的 PDOException:SQLSTATE[HY000]:一般错误:1364 字段 'points' 在 /var/www/html/public_html/register.php:18 中没有默认值 堆栈跟踪:#0 / var/www/html/public_html/register.php(18): PDOStatement->execute(Array) #1 {main} 在第 18 行的 /var/www/html/public_html/register.php 中抛出
代码如下:
<?php
$dbConnection = new PDO('mysql:dbname=App;host=localhost;charset=utf8', '*', '*');
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
ini_set('display_errors', 1);
$email = "sexyi";
$username = "sexyi";
$password = "sexyi";
$response = array();
$hi = $dbConnection->prepare("SELECT * FROM user WHERE username = ? OR email = ?");
$hi->execute(array($username, $email));
$red = $hi->fetchAll(PDO::FETCH_ASSOC);
if (count($red) > 0){
$response["success"] = false;
}else{
$response["success"] = true;
$stmt = $dbConnection->prepare("INSERT INTO user (email, username, password) VALUES (?, ?, ?)");
$stmt->execute(array($email, $username, $password));
}
echo json_encode($response);
?>
【问题讨论】:
-
这可能是你的表有一个字段“点”你没有设置值。请检查你的数据库表。
-
警告:编写自己的访问控制层并不容易,而且有很多机会会严重错误。当任何现代的development framework(如Laravel)带有强大的authentication system 内置时,请不要编写自己的身份验证系统。至少遵循recommended security best practices 并且永远不要将密码存储为纯文本。