PHP不会写入MySQL表

时间:2015-12-01 10:37:01

标签: php mysql mysqli

我正在尝试为网站编写登录功能,但由于一些奇怪的原因,MySQLi query命令似乎无法正常工作。它通过时没有错误,但当我看到它的表时它是空的。

以下是相关代码。

$hash = password_hash(($_POST['password']), PASSWORD_DEFAULT);
$hash = $sql_link->real_escape_string($hash);
$_POST['username'] = $sql_link->real_escape_string($_POST['username']);

// Escape the input data
$cmd = ('INSERT INTO web_creds(email, pass, joined) ' .
                    'VALUES ' .
                    '("'.$_POST['username'].'", ' .
                        '"'.($hash).'", ' .
                        'NOW()' .
                        ')');

if (!$sql_link->query($cmd) === TRUE) {
    $err[]="input failed " . $sql_link->error;;
}

else if($sql_link->affected_rows==1)
{
    $_SESSION['msg']['reg-success']="Passed";
}
else $err[]='This username is already taken!';

我运行它,我在日志中看到了查询。

57 Query INSERT INTO web_creds(email, pass, joined) VALUES ("email@domain.com", "hashed-password", NOW())

但是当我运行select * from web_creds时,我得到EMPTY

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

(评论:您的代码容易受到SQL注入)

它生成的SQL语句无效 - 你在字符串周围加上双引号(应该是单引号或使用绑定)。

(评论:我,我希望其他大多数人,认为它不会在查询中使用显式数据库名称)

添加是否会如此困难:

 print "<div>$cmd</div>";

进入你的代码?

(评论:为什么所有括号?)

试试这个:

$cmd = "INSERT INTO web_creds(email, pass, joined)
    VALUES
    ( '$_POST[username]'
    , '$hash)'
    , NOW()
    )";