Php MySQL查询已中断

Php MySQL查询已中断,php,mysql,insert,Php,Mysql,Insert,好吧,现在很晚了,我不明白为什么这个坏了。这就是。。错误如下 语法错误,意外的T\u已被装箱,并且\u为空白,应为T\u字符串 或T_变量或T_NUM_字符串 通常我会认为这是一种误解“或者类似的,我已经检查过了,我没有发现周围代码中缺少任何内容 现在,尽管我不关心可能的“注射”因素,但有人请告诉我这一行有什么问题 mysql_query("INSERT INTO files_posted (ID, when, email, randomkey, count, fileID) VALUES (N

好吧,现在很晚了,我不明白为什么这个坏了。这就是。。错误如下

语法错误,意外的T\u已被装箱,并且\u为空白,应为T\u字符串 或T_变量或T_NUM_字符串

通常我会认为这是一种误解“或者类似的,我已经检查过了,我没有发现周围代码中缺少任何内容

现在,尽管我不关心可能的“注射”因素,但有人请告诉我这一行有什么问题

mysql_query("INSERT INTO files_posted (ID, when, email, randomkey, count, fileID) VALUES (NULL, $when, $email, $fakeHash, '0', mysql_real_escape_string($_POST['fileID']))") or die(mysql_error());

其中一个变量包含撇号: $when,$email,$fakeHash


这是我的猜测。所有这些都应该使用mysql\u real\u escape\u string()。

您的一个变量包含一个撇号: $when,$email,$fakeHash


这是我的猜测。所有这些都应该使用mysql\u real\u escape\u string()。

除了在嵌入(插值)变量上使用带引号的下标外,查询中可能缺少一些引号(围绕值)

试试这个:

mysql_query("INSERT INTO files_posted (ID, when, email, randomkey, count, fileID) VALUES (NULL, '".mysql_real_escape_string($when)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($fakeHash)."', '0', '".mysql_real_escape_string($_POST['fileID'])."')") or die(mysql_error());
如果总是希望
$\u POST['fileID']
为整数,则不需要将其包装在
mysql\u real\u escape\u string
调用中,并且实际上将其转换为int更安全(针对SQL注入),可能更有效:

mysql_query("INSERT INTO files_posted (ID, when, email, randomkey, count, fileID) VALUES (NULL, '".mysql_real_escape_string($when)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($fakeHash)."', '0', ".((int)$_POST['fileID']).')') or die(mysql_error());

除了在嵌入(插值)变量上使用带引号的下标外,查询中还可能缺少一些引号(围绕值)

试试这个:

mysql_query("INSERT INTO files_posted (ID, when, email, randomkey, count, fileID) VALUES (NULL, '".mysql_real_escape_string($when)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($fakeHash)."', '0', '".mysql_real_escape_string($_POST['fileID'])."')") or die(mysql_error());
如果总是希望
$\u POST['fileID']
为整数,则不需要将其包装在
mysql\u real\u escape\u string
调用中,并且实际上将其转换为int更安全(针对SQL注入),可能更有效:

mysql_query("INSERT INTO files_posted (ID, when, email, randomkey, count, fileID) VALUES (NULL, '".mysql_real_escape_string($when)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($fakeHash)."', '0', ".((int)$_POST['fileID']).')') or die(mysql_error());

请确保将所有文本字段值括在(单引号或双引号)中(并确保它们已转义)。需要使用引号来确保MySQL将文本视为字符串,而不是其他内容


或者,使用PDO,您不必担心这一点。

确保将所有文本字段值括在(单引号或双引号)中(并确保它们被转义)。需要引号来确保MySQL将文本视为字符串,而不是其他内容


或者,使用PDO,您不必担心这一点。

此外,如果验证为
int
,他不需要将数字封装在撇号中。同样,如果验证为
int
,他也不需要将数字封装在撇号中。您应该按照顺序在失败时回显变量要从语法上测试该行是否正确(至少对于PHP,请等待看到
mysql\u error
将告诉您什么),因此错误必须在其他地方(我们需要更多代码)。您应该在失败时回显变量,以便从语法上测试该行是否正确(至少对于PHP,请等待看到
mysql\u error
将告诉您什么),因此错误必须在其他地方(我们需要更多代码)就是这样,我只是没有把所有的东西都封好。就像我说的很晚了,这是漫长的一天。筋疲力尽了,但要赶上最后期限,睡眠与愚蠢的比率开始上升。就是这样,我只是没有把所有的东西都封好。就像我说的很晚了,这是漫长的一天。筋疲力尽了,但这是真的吗eadline会议,睡眠与愚蠢的比率开始上升。