【问题标题】:Inserting Into A Database With PDO Commands使用 PDO 命令插入数据库
【发布时间】:2014-12-28 19:59:55
【问题描述】:

我正在学习 PDO 命令并一直在学习示例

下面的查询对 SELECT 命令有效,但不适用于 INSERT 命令。我看不出 INSERT 命令有什么问题。我得到的错误是“未捕获的异常(PDOException),带有消息 SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误”

$descr='1M18';
Require('connect_db.php');  

//SELECT COMMAND         
$stmt=$mysql_link->prepare("SELECT descr,area_id FROM berthmove WHERE descr=:descr");
$stmt->execute(array(':descr'=>$descr));
foreach($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
 echo $row['descr'];    
 echo $row['area_id'];
}

//INSERT COMMAND
$msg_type_berth='Hello';
$railinfo2=$mysql_link->prepare("INSERT INTO berthmove ('msg_type_berth') VALUES(:msg_type_berth)");
$railinfo2->execute(array(':msg_type_berth'=>$msg_type_berth));         
$mysql_link=null;

【问题讨论】:

  • 看看你的帖子。查看代码中的大量空白。不要只是从你的编辑器中复制粘贴,在点击提交之前总是预览你的帖子以确保它看起来正确。 (特别注意代码块是基于 4 个空格的。不要添加更多的前导空格,否则你只是创建了一个巨大的不必要滚动块)
  • 您是否尝试使用 CLI 工具 (> mysql -u... -p... -h... yourdbname) 连接到 MySQL,并尝试将您的查询复制粘贴到那里查看它的内容?
  • 当我尝试在其中粘贴问题行时,会显示 ERROR 1064 (42000) : You have an error in your SQL syntax

标签: php mysql pdo


【解决方案1】:

可能错误是由列名两边的单引号引起的,尝试使用:

$railinfo2 = $mysql_link->prepare('INSERT INTO berthmove (msg_type_berth) VALUES(:msg_type_berth)');

【讨论】:

  • 不要编辑您的问题以使其不再有损坏的代码:其他人发现此问题有类似问题并不会从中受益。将问题保留为代码损坏,将答案标记为正确,每个人都会获胜。
  • @user2635961,没关系!您应该在问题中留下有错误的版本,这样其他用户也可以查看问题。
猜你喜欢
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2016-02-25
  • 2014-04-17
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
相关资源
最近更新 更多