2013-02-12 91 views
2

我不知道什么是错误的..我见过很多不同的方式来做到这一点,有人可以告诉我这是什么地方是错误的..它抛出这个错误“错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以在'desc'附近使用正确的语法VALUES('30 .59','blue衬衫','一件非常酷的蓝色衬衫')'在第1行“。我已经尝试过多种方式和同样的结果..mysql PDO多参数插入语句

<?php 
$title = 'blue shirt'; 
$desc = 'a really cool blue shirt'; 
$price = 30.59; 

$user = 'foo'; 
$pass = 'Bar'; 

try{ 
$conn = new PDO('mysql:host=examplehost;dbname=exampledb_name',$user,$pass); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
if(!$conn){ 
    echo"couldnt connect to db"; 
}else { 
    echo 'connected like a boss!!' . '<br>'; 
    $stmt = $conn->prepare("INSERT INTO 68_items (price, title, desc) VALUES (:price,:title,:desc)"); 
    if(!$stmt->execute(array(
      ':price' => $price, 
      ':title' => $title, 
      ':desc' => $desc)) 
    ) { 
     echo'statment failed'; 
    }else { 
     echo 'statment success, ' . $stmt->rowCount() . 'rows affected.'; 
    } 
} 
} catch (PDOException $e) { 
echo 'ERROR: ' . $e->getMessage(); 
} 
?> 
+0

我们可以问你同样的问题。你的代码有什么问题?错误?没有?没有做到预期的事情? – Tchoupi 2013-02-12 20:37:48

+0

编辑上面 – 2013-02-12 20:40:34

回答

6

descreserved word in mysql所以你应该使用反引号进行转义:

"INSERT INTO 68_items (price, title, `desc`) VALUES (:price,:title,:desc)" 
+3

+1我只是在你发布你的答案时键入'反向':) – Tchoupi 2013-02-12 20:42:35

+1

这是疯了......我想它是学习网页设计的休息时间......谢谢你,我一直在这个约2小时.. – 2013-02-12 20:44:32