PHP PDO 插入数据

标签 php mysql pdo prepared-statement

<分区>

我是 PDO 的新手,我正在尝试将数据插入表中。

这是我的表格:

CREATE TABLE  `Message` (
`ID` INT( 8 ) NOT NULL  AUTO_INCREMENT ,
`DateTime` DATETIME NOT NULL ,
`SmsSid` VARCHAR( 34 ) NOT NULL ,
`AccountSid` VARCHAR( 34 ) NOT NULL ,
`From` VARCHAR( 12 ) NOT NULL ,
`To` VARCHAR( 12 ) NOT NULL ,
`Body` VARCHAR( 160 ) NOT NULL ,
`FromCity` VARCHAR( 50 ) NULL ,
`FromState` VARCHAR( 50 ) NULL ,
`FromZip` VARCHAR( 50 ) NULL ,
`FromCountry` VARCHAR( 50 ) NULL ,
`ToCity` VARCHAR( 50 ) NULL ,
`ToState` VARCHAR( 50 ) NULL ,
`ToZip` VARCHAR( 50 ) NULL ,
`ToCountry` VARCHAR( 50 ) NULL ,
`ConversationNumber` INT( 4 ) NOT NULL ,
PRIMARY KEY (  `ID` )
) ENGINE = MYISAM

这是我试图插入到表中的 PHP 代码。执行此插入语句的正确方法是什么?准备()查询()执行()?

我可以使用这个类似的代码而不是上面的代码来插入到一个不太复杂的表中。我不确定到底是什么导致了问题,语法,列类型,自动递增,日期时间?这张表中有什么我没有在插入查询中正确处理的吗?此外,我是否正确处理异常/错误以查看我需要帮助调试的正确错误消息?

<?php
try
{
$connectionString = new PDO("mysql:host=xxxx;dbname=xxxx;","xxxx","xxxx");
}
catch(PDOException $e)
{
echo 'Connection failed'.$e->getMessage();
}

$DateTime = "NOW()";
$SmsSid = "abcdef";
$AccountSid = "abcdef";
$FromWho = "abcdef";
$To = "abcdef";
$Body = "abcdef";
$FromCity = "abcdef";
$FromState = "abcdef";
$FromZip = "abcdef";
$FromCountry = "abcdef";
$ToCity = "abcdef";
$ToState = "abcdef";
$ToZip = "abcdef";
$ToCountry = "abcdef";
$ConversationNumber = "abcdef";

try
{
$executeQuery = $connectionString->prepare("INSERT INTO Message (SmsSid,AccountSid,`From`,To,Body,FromCity,FromState,FromZip,FromCountry,ToCity,ToState,ToZip,ToCountry,ConversationNumber) VALUES (:SmsSid,:AccountSid,:FromWho,:To,:Body,:FromCity,:FromState,:FromZip,:FromCountry,:ToCity,:ToState,:ToZip,:ToCountry,:ConversationNumber)");

$executeQuery->execute(array(':SmsSid'=>$SmsSid,':AccountSid'=>$AccountSid,':FromWho'=>$FromWho,':To'=>$To,':Body'=>$Body,':FromCity'=>$FromCity,':FromState'=>$FromState,':FromZip'=>$FromZip,':FromCountry'=>$FromCountry,':ToCity'=>$ToCity,':ToState'=>$ToState,':ToZip'=>$ToZip,':ToCountry'=>$ToCountry,':ConversationNumber'=>$ConversationNumber));


}
catch(PDOException $e)
{
echo 'Query failed'.$e->getMessage();
}

$connectionString = null;
?>

最佳答案

From 是 MySQL 中的保留字。当您将它用作列名时,您必须用反引号将其括起来,如

 `From`

默认情况下,PDO 不会抛出异常。要使其在出错时抛出异常,请调用

$pdoObject->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

关于PHP PDO 插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15058129/

相关文章:

php - 从搜索框中获取内容在数据库中查找它

php - 使用 PDO 获取单行单列

php - 如何使用 php 显示来自 mysql 的多个图像(blob)?

php - 重定向到登录页面,除非用户已登录

c# asp.net jQuery AJAX 从 MySQL 获取数据

python - 如何查询两个表,表1中的某些项与表2没有关联?

php - PDO_DBLIB 对比PDO_SQLSRV

php - 未捕获的异常 'ErrorException',消息为“错误的 SQL : INSERT INTO”

php - 2 个相同的 apache/php 安装从同一个 SQL Server 数据库返回不同的结果

php - 当字符串绑定(bind)时,将 WHERE IN (...) 与 PDO 结合使用不起作用