PHP MySQL查询PHP解析错误



我有这个mysql查询:

$sql = "INSERT INTO lijsten(naam, niveau, nederlands, duits, frans, grieks,
engels, latijn, spaans, wiskunde, natuurkunde, scheikunde, geschiedenis,
economie, aardrijkskunde, ANW, godsdienst)
VALUES($_POST["naam"],$_POST["niveau"],$_POST["nederlands"],$_POST["duits"],$_POST["frans"],$_POST["grieks"],$_POST["engels"],$_POST["latijn"],$_POST["spaans"],$_POST["wiskunde"],$_POST["natuurkunde"],$_POST["scheikunde"],$_POST["geschiedenis"],$_POST["economie"],$_POST["aardrijkskunde"],$_POST["ANW"],$_POST["godsdienst"])";

它被发送到具有以下功能的数据库:

function connectDB($sql) {
$DBcon = mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db(database);
$result = mysql_query($query) or die(mysql_error());
mysql_close($DBcon);
return $result;

但当我尝试运行它时,它会给我一个php解析错误:

PHP Parse error:  syntax error, unexpected 'naam' (T_STRING) in /media/usbdisk/website/www/boeken/naardb.php on line 11

有人能告诉我我犯了什么错误吗?我已经尝试了很多方法来放置查询,但都不起作用。

  1. 您永远不应该构建这样的查询
  2. 这不是你逃避价值观的方式
  3. mysql_已弃用,您应该使用已准备好的语句

PDO中的示例:

$sql = "INSERT INTO lijsten(naam, niveau, nederlands, duits, frans, grieks,
engels, latijn, spaans, wiskunde, natuurkunde, scheikunde, geschiedenis,
economie, aardrijkskunde, ANW, godsdienst)
VALUES(:naam,:niveau .......)";
if($stmt = $pdo->prepare($sql)){
    $stmt->bindValue(:naam, $_POST["naam"]);
    .....
    $stmt->execute();
}

有几个错误,但我将从这个问题开始。

unexpected 'naam' (T_STRING)...

是因为PHP不希望那里有字符串。您正在转义部分查询,但实际上只需要连接$_POST变量。

我建议将posts变量设置为它们自己的变量,以简化您的查询,并将查询格式化为如下答案:在MySQL插入语句中使用php变量

IE:$naam = $_POST["naam"];等…

最大的问题是您使用的是不推荐使用的方法,您应该使用PDO(Prepared)查询

PHP弃用的方法。

你绝对应该考虑使用PDO并准备你的陈述。

PDO的两个快速参考:

  • http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
  • http://php.net/manual/en/book.pdo.php

祝你好运!

尝试像这样连接查询中的变量:

"INSERT INTO lijsten(naam, niveau, nederlands, duits, frans, grieks,
engels, latijn, spaans, wiskunde, natuurkunde, scheikunde, geschiedenis,
economie, aardrijkskunde, ANW, godsdienst)
VALUES("
.mysql_escape_string($_POST['naam']).
")";

以及阅读有关sql注入的内容。

@mada的答案是如何使用PDO创建SQL调用的正确示例。

相关内容

  • 没有找到相关文章