使用PHP和MySQL插入时出错

使用PHP和MySQL插入时出错,php,mysql,Php,Mysql,我有个问题。我有这些桌子: Uteni、Treni和Operazioni uti有一个字段: ID (INT - AUTO_INCREMENT) Treni有一个字段: ID that is an int (AUTO_INCREMENT) Operazioni有三个字段: ID (int AUTO_INCREMENT) Utente (int) Treno (int) 我有两个变量: $\u包含用户id的会话['id\u user'](表Utenti) $id\u treno包含列车id(

我有个问题。我有这些桌子:

Uteni、Treni和Operazioni

uti
有一个字段:

ID (INT - AUTO_INCREMENT)
Treni
有一个字段:

ID that is an int (AUTO_INCREMENT)
Operazioni
有三个字段:

ID (int AUTO_INCREMENT)
Utente (int)
Treno (int)
我有两个变量:

$\u包含用户id的会话['id\u user']
(表Utenti)
$id\u 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

为什么??谢谢

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

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

中尉和特伦诺是内特。你不需要和他们在一起

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

concatanion中出现问题。

如果试图在字符串中解析变量,则需要使用正确的语法。对于数组元素,这意味着键周围没有单引号,通常情况下:

$query = "INSERT INTO operazioni ('Utente','Treno') VALUES ('$_SESSION[id_user]','$id_treno')";
这在中有记录


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

在页面中使用会话之前,您可能还没有启动会话? 另外,您还可以始终使用var_转储您的sql命令,并将其直接尝试到phpMyAdmins查询部分,查看到底是什么错误,然后尝试修复它。
cheers

如果要使用在线双引号解析,请删除
。e、 g.
“..$\u会话[id\u用户]…”
。为了证明这一点,请在交接之前执行
echo$query
,并查看差异。var\u dump$\u SESSION['id\u user']和$id\u treno,然后在查询中使用它们并发布它们的值。我必须说,我很高兴由于缺少转义数据,您得到了这个错误
'..mysql\u real\u escape\u string({$\u SESSION['id\u user'])。“
@amigura没有理由认为
$\u SESSION
变量需要转义。它们不一定是由用户提供的。(尽管参数化查询总是一个好主意。)太本地化了。但是也可能是重复的。你能解释一下这个插入到operazioni中的原因吗('Utene','Treno')?你为什么用单引号?你能解释一下这个插入到operazioni('Utene','Treno')?你为什么用单引号?这是一样的,我的代码总是使用这种格式。你可以用反勾来表示字段名而不是单引号。我在写答案的过程中犯了一个错误
$query = "INSERT INTO operazioni ('Utente','Treno') VALUES ('$_SESSION[id_user]','$id_treno')";