1

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

1 回答 1

3

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

INSERT INTO `create` ...

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

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

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

于 2013-07-12T02:36:22.097 回答