PDO / SQL插入不起作用

时间:2013-07-12 02:31:09

标签: php sql arrays pdo insert

获得以下代码。所有值都是通过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);

1 个答案:

答案 0 :(得分:3)

create是mysql中的保留字,所以你需要在反引号中引用它:

INSERT INTO `create` ...

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

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

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