PDO/SQL插入不起作用


PDO/SQL insert not working

得到以下代码。所有值都是通过javascript获取的,然后通过ajax发送。最后的var_dump($array)可以工作并显示所有正确的值。所以它们都是正确通过的。try方法的catch错误也永远不会弹出。没有将这些值插入到sql表中。怎么了?提前谢谢。

$name = $_GET['name'];
$category = $_GET['category'];
$subCategory = $_GET['subCategory'];
$date = $_GET['date'];
$address = $_GET['address'];
$city = $_GET['city'];
$state = $_GET['state'];
$host = $_GET['host'];
$imagePath = $_GET['imagePath'];
$info = $_GET['info'];
//turn into array
$array = array();
$array[0]=$name;
$array[1]=$category;
$array[2]=$subCategory;
$array[3]=$date;
$array[4]=$address;
$array[5]=$city;
$array[6]=$state;
$array[7]=$host;
$array[8]='j';//$imagePath;
$array[9]=$info;
try {
    $con = new PDO('mysql:host=localhost;dbname=test');
$insert = $con->prepare(" INSERT INTO create 
(name,category,subCategory,date,address,city,state,host,imagePath,info)
VALUES (?,?,?,?,?,?,?,?,?,?) ");
$insert->execute($array);   
}
catch(PDOException $e) { //try
    echo 'error';
   //echo 'ERROR: ' . $e->getMessage();
}
var_dump($array);

create是mysql中的保留字,因此您需要在backticks:中引用它

INSERT INTO `create` ...

要让PDO抛出异常,您需要在打开连接后添加:

 $con = new PDO('mysql:host=localhost;dbname=test');
 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

顺便说一句,我假设您也使用用户名和密码(PDO构造函数的第二个和第三个参数)登录数据库。。。