Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO插入不工作且未给出任何错误?_Php_Mysql_Pdo - Fatal编程技术网

Php PDO插入不工作且未给出任何错误?

Php PDO插入不工作且未给出任何错误?,php,mysql,pdo,Php,Mysql,Pdo,我一直试图让一个简单的插入工作,我不明白为什么它不工作。该表有1行,我可以使用select获取数据,但当我插入时,什么也不会发生。没有抛出php错误,但是抛出了一个pdo错误,但是我仍然看不出问题出在哪里。这是密码 $Src = "asd"; $Title = "imgasd"; $Table = "asd"; $TableRow = 123; $External = 0; $Type = "image"; $Thumb = "asd"; $Summery = "asd"; $stmt = $

我一直试图让一个简单的插入工作,我不明白为什么它不工作。该表有1行,我可以使用select获取数据,但当我插入时,什么也不会发生。没有抛出php错误,但是抛出了一个pdo错误,但是我仍然看不出问题出在哪里。这是密码

$Src = "asd";
$Title = "imgasd";
$Table = "asd";
$TableRow = 123;
$External = 0;
$Type = "image";
$Thumb = "asd";
$Summery = "asd";

$stmt = $db->prepare("INSERT INTO Media (Title, Summery, Src, Table, TableRow, External, Type, Thumb) VALUES (:Title, :Summery, :Src, :Table, :TableRow, :External, :Type, :Thumb)");
$stmt->execute(array(':Title'  => $Title, ':Summery'  => $Summery, ':Src'  => $Src, ':Table'  => $Table, ':TableRow'  => $TableRow, ':External'  => $External, ':Type'  => $Type, ':Thumb'  => $Thumb)) or die(print_r($stmt->errorInfo(), true));
上面的代码不会抛出php错误,但会在浏览器中返回以下内容。我不知道我是否犯了一个极其愚蠢的错误或是什么,但我无法让它起作用

Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Table, TableRow, External, Type, Thumb) VALUES ('imgasd', 'asd', 'asd', 'asd', '' at line 1 )
这张桌子是一张桌子。最佳实践会告诉您不要将它们用作列名,但如果您将它们用反勾号括起来,则可以这样做。从手册中:

标识符可以带引号或不带引号。如果标识符包含特殊字符或是保留字,则无论何时引用它,都必须对其进行引用。例外情况:限定名称中句点后的保留字必须是标识符,因此不需要引用

这应该起作用:

$stmt = $db->prepare("INSERT INTO Media (`Title`, `Summery`, `Src`, `Table`, `TableRow`, `External`, `Type`, `Thumb`) VALUES (:Title, :Summery, :Src, :Table, :TableRow, :External, :Type, :Thumb)");
这张桌子是一张桌子。最佳实践会告诉您不要将它们用作列名,但如果您将它们用反勾号括起来,则可以这样做。从手册中:

标识符可以带引号或不带引号。如果标识符包含特殊字符或是保留字,则无论何时引用它,都必须对其进行引用。例外情况:限定名称中句点后的保留字必须是标识符,因此不需要引用

这应该起作用:

$stmt = $db->prepare("INSERT INTO Media (`Title`, `Summery`, `Src`, `Table`, `TableRow`, `External`, `Type`, `Thumb`) VALUES (:Title, :Summery, :Src, :Table, :TableRow, :External, :Type, :Thumb)");

旁注:Summery拼写错误,但它在任何地方都是一致的,所以它不会给您带来任何技术问题!我有一种感觉,这可能是src,这是一个保留字,但我从来没有检查过表。我花了整整两个小时在这里,所以谢谢你的帮助!不用担心-我想在表和列名周围加上勾号在任何时候都是很好的做法。旁注:Summery拼写错误,但它在任何地方都是一致的,所以它不会给您带来任何技术问题。解决了这个问题!我有一种感觉,这可能是src,这是一个保留字,但我从来没有检查过表。我花了整整两个小时在这里,所以谢谢你的帮助!不用担心-我想在表和列名周围加上勾号将是一种很好的做法。。