我正在尝试使用以下代码写入MySQL数据库/表 - 但由于某种原因它只是不会写!我已经改变了" INSERT INTO"排了好几次,每次尝试不同的东西 - 没有运气!!!
DBsettings.php 包含带有MySQL连接信息的变量 - 用于创建表格和设置列类型和内容。为了您的信息,它正在运行主代码(输入的用户信息没有错误),并回显"太棒了!没有错误!",所以我不太确定什么不起作用 - MySQL检查线说我能够正确连接......有人可以查看我的代码?
PasswordHash.php 文件包含散列和腌制密码的代码 - 此处无需查看,从其他网站获取,完全没有错误。
我知道我不能清洁' MySQL代码更安全......
if($error == null){
include('DBsettings.php');
$connect = mysqli_connect($dbserver, $dbuser, $dbpass, $dbname);
if (mysqli_connect_errno()) {
echo 'Failed to connect to MySQL Database! Error: '.mysqli_connect_error();
} else {
include('PasswordHash.php');
$passinfo = explode(':', create_hash($password));
$addinfo = "INSERT INTO {$dbprefix}Users (Email, Displayname, Registered, Rank, Status, Password, Salt) VALUES ('{$email}', '{$displayname}', '{date('Y\/m\/d')}', 9999, 1, '{$passinfo[3]}', '{$passinfo[2]}')";
/* format: algorithm:iterations:salt:hash */
mysqli_query($connect, $addinfo);
mysqli_close($connect);
echo 'Salt: '.$passinfo[2];
echo '<br>Hash: '.$passinfo[3];
echo '<br>Awesome! No Errors!';
}
} else {
echo $error;
}
有问题的代码 - 我尝试过添加;
error_reporting(E_ALL);
ini_set('display_errors', '1');
但是所有这些都揭示了我的DBsettings.php文件中未定义的localhost错误 - 当我创建MySQL数据库表时文件工作正常,所以我并没有把它作为优先事项。
谢谢!
答案 0 :(得分:1)
如果您回复查询,您会发现此问题。以下是您的最终查询
INSERT INTO Users (Email, Displayname, Registered, Rank,Status, Password, Salt)
VALUES ('', '', '{date('Y\/m\/d')}', 9999, 1, '', '')
请注意,您的日期没有像您预期的那样进行插值,我确定您是否将MySQL中的该字段设置为日期时间字段,它不会接受该值{date('Y\/m\/d')}
,移动日期函数调用在字符串之外。
另外,在查询执行后你没有收到任何错误,因为你根本就没有检查。如何检查的一个例子可以是
if (!mysqli_query($connect, $addinfo)) {
printf("Error: %s\n", mysqli_error($connect));
}
答案 1 :(得分:1)
我看到你的INSERT查询包含&#39; {date(&#39; Y / m / d&#39;)}&#39; ,也许单引号有冲突,您最好转发日期(&#39; Y / m / d&#39;)语句的单引号。