【问题标题】:Error during INSERT INTO with PHP and MySQL [closed]使用 PHP 和 MySQL 在 INSERT INTO 期间出错 [关闭]
【发布时间】:2013-06-22 17:52:22
【问题描述】:

我有问题。我有这些表:

Utenti、Treni 和 Operazioni

Utenti 有一个字段:

ID (INT - AUTO_INCREMENT)

Treni 有一个字段:

ID that is an int (AUTO_INCREMENT)

Operazioni 有三个字段:

ID (int AUTO_INCREMENT)
Utente (int)
Treno (int)

我有两个变量:

$_SESSION['id_user'] 包含用户 ID(表 Utenti) $id_treno 包含火车的 ID(表 Treni)

当我执行时:

$query = "INSERT INTO operazioni ('Utente','Treno') VALUES ('$_SESSION['id_user']','$id_treno')";

我有这个错误:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

为什么?谢谢

【问题讨论】:

  • 如果您要使用内联双引号解析,请删除 '。例如"...$_SESSION[id_user]..."。为了证明这一点,在交接前做一个echo $query 看看有什么不同。
  • var_dump $_SESSION['id_user'] 和 $id_treno 在查询中使用它们并发布它们的值之前
  • 我不得不说我很高兴您因为缺少转义数据而收到该错误。 '".mysql_real_escape_string({$_SESSION['id_user'])."'
  • @amigura 没有理由认为$_SESSION 变量需要转义。它们不一定由用户提供。 (尽管参数化查询总是一个好主意。)

标签: php mysql


【解决方案1】:

如果您尝试在字符串中解析变量,则需要使用正确的语法。对于数组元素,这意味着没有像往常那样在键周围加上单引号:

$query = "INSERT INTO operazioni ('Utente','Treno') VALUES ('$_SESSION[id_user]','$id_treno')";

这在the manual page on strings中有记录。

也可能存在 SQL 错误,但 PHP 错误的原因是字符串语法不正确。

【讨论】:

    【解决方案2】:

    试试这个:-

    $query = "INSERT INTO operazioni (Utente,Treno) VALUES ('".$_SESSION['id_user']."','".$id_treno."')";
    

    【讨论】:

      【解决方案3】:

      您的查询中有多个错误。 mysql 中的字段名称可以放在反引号中,而不是单引号。此外,变量必须被转义;推荐的方式是使用 PDO/Mysqli 并绑定参数

      【讨论】:

        【解决方案4】:

        Utente 和 Treno 是整数。你不需要 ' 和他们一起

        【讨论】:

          【解决方案5】:
          $query = "INSERT INTO operazioni ('Utente','Treno') VALUES ('".$_SESSION['id_user']."','$id_treno')";
          

          连接问题。

          【讨论】:

          • 你能解释一下这个 INSERT INTO operazioni ('Utente','Treno') 吗?为什么你使用单引号?
          【解决方案6】:
          $query = 'INSERT INTO operazioni ("Utente","Treno") VALUES ("'.$_SESSION['id_user'].'","'.$id_treno.'")';
          

          【讨论】:

          • 你能解释一下这个 INSERT INTO operazioni ('Utente','Treno') 吗?为什么要使用单引号?
          • 一样,我的代码总是使用这种格式
          • 字段名称可以使用反引号,而不是单引号
          • 我在写答案时犯了一个错误
          【解决方案7】:

          也许您在页面中使用会话之前还没有开始会话? 另外,您始终可以 var_dump 您的 sql 命令并直接在 phpMyAdmins 查询部分尝试,看看到底出了什么问题,然后尝试修复它。 干杯

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-06-20
            • 2014-06-20
            • 2011-05-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多