SQL dosen';不要在数据库中创建任何内容


SQL dosen't create anything in database

这是我的代码,但当我在users下输入数据库时,没有创建任何内容。它以前也起过作用。

这是我的数据库信息

$odb = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
if(!$odb){ die('Connection Failed!'); }
?>

这就是我想要创建用户的地方。

$steamid = $steamprofile['steamid'];
/*Check possible existing data*/
$SQLCheckLoginQuery = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `steamid` = :SteamID");
$SQLCheckLoginQuery -> execute(array(':SteamID' => $steamid));
$countUsers = $SQLCheckLoginQuery -> fetchColumn(0);
if($countUsers <= 0){
$SQLInsertQuery = $odb -> prepare("INSERT INTO `users` (steamid) VALUES :SteamID");
$SQLInsertQuery -> execute(array(':SteamID' => $steamid));
}
?>

您的mysql查询中似乎有一个错误,您的VALUES应该在括号之间:

$SQLInsertQuery = $odb -> prepare("INSERT INTO `users` (steamid) VALUES (:SteamID)");

编辑:在您的评论中,您向我们展示了users的结构,而列avatar似乎是强制性的。所以你应该在插入查询中设置一个默认值或添加头像

$SQLInsertQuery = $odb -> prepare("INSERT INTO `users` (steamid, avatar) VALUES (:SteamID, :avatar)");

此外,您可以激活日志以查看是否有异常抛出

$odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

所以我的修复是:

$SQLInsertQuery = $odb -> prepare("INSERT INTO `users` (steamid) VALUES :SteamID");

$SQLInsertQuery = $odb -> prepare("INSERT INTO `users` (steamid) VALUES (:SteamID)");

+在列化身中添加"NULL"作为默认值。