写入MYSQL表不起作用

时间:2014-05-04 05:21:59

标签: php mysql insert

我正在尝试使用以下代码写入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数据库表时文件工作正常,所以我并没有把它作为优先事项。

谢谢!

2 个答案:

答案 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;)语句的单引号。