PHP& Mysql语法不正确?

时间:2017-02-20 23:13:26

标签: php mysql

我遇到的问题是,在提交信息时根本没有运行,我相信我的语法有误。

 if ($_POST['note'] != $player->note_text) {
    $message = 'Admin '.$user.' has added the note ('.$_POST['note'].') to '.$player->name.'('.$pid.')';
    logIt($user, $message, $dbcon);
    $note = $_POST['note'];
    $note = '"'.$note.'"';
    $UpdateN = "INSERT INTO notes (uid, staff_name, name, alias, note_text, warning) VALUES ('$_POST[hidden]', '$user', '$player->name', '$player->aliases', '$note','$_POST[warn]')";
    $UpdateN2 = "INSERT INTO players WHERE `playerid` = $_POST[hidden] (warning) VALUES ('$_POST[warn]')";
    mysqli_query($dbcon, $UpdateN, $UpdateN2);

我添加的新行似乎打破了它'$ UpdateN2'。 我不确定新行是否违反了声明,因为我是PHP和mysqli的新手,我可以通过更详细的方式学习和理解论坛或网站的任何指示,我将不胜感激。

编辑:我已经从使用mysqli转移到PDO,我强烈建议任何愿意开始使用PHP的MYSQL命令的人来看看这个:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

我开始阅读此内容并对其进行测试,我发现这更容易,但在几天过后阅读它时,它看起来更清晰,更容易理解。

2 个答案:

答案 0 :(得分:1)

如果是我,我只需要对mysqli_query进行两次单独调用,每次调用一次。由于可能存在SQL注入漏洞,PHP历来一直非常谨慎地允许在单个函数调用中允许多个查询。

在相关说明中,您需要清理输入。 $ _POST永远不应该直接出现在mysql查询字符串中,因为你的帖子数据可能实际上类似于')&#34 ;; DROP TABLE用户;'。

最后,您在插入上使用WHERE子句。这可能会破坏您的查询。您应该花几天时间研究如何以及为什么会破坏您的查询,以及如何以及为什么要编写正确的SQL查询。这样做会为您的公司增加价值,因为您的公司不太可能遭受灾难性的数据泄露,并且它会为您增加价值,因为您将成为更好的SQL编码器。

编辑:在我写这篇文章的时候,三个不同的人分别制作了这些点。 LOL。

答案 1 :(得分:1)

与原始的mysqli程序样式保持一致,使用带有绑定占位符的预处理语句,如下所示:

IComparer<>