-1

我有这个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

有人能告诉我我犯了什么错误吗?我已经尝试过多种查询方式,但都没有奏效。

4

3 回答 3

1

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

"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 注入的信息。

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

于 2015-12-28T22:01:46.687 回答
1
  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();
}
于 2015-12-28T22:01:59.723 回答
0

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

unexpected 'naam' (T_STRING)...

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

我建议将帖子变量设置为它们自己的变量,以简化您的查询并像这个答案概述的那样格式化查询:Using php variables inside MySQL insert statement

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

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

PHP 已弃用的方法。

您绝对应该考虑使用 PDO 并准备您的声明。

PDO 的几个快速参考:

祝你好运!

于 2015-12-28T22:00:36.237 回答