PHP PDO准备插入-不插入数据并且不显示错误[重复]
Posted
技术标签:
【中文标题】PHP PDO准备插入-不插入数据并且不显示错误[重复]【英文标题】:PHP PDO prepared insert - does not insert data and show no errors [duplicate] 【发布时间】:2012-04-24 06:19:23 【问题描述】:这个问题让我发疯,我尝试了一切。 Is 没有给我任何错误,但它也没有向数据库插入任何内容。数据库连接良好,应该没有错别字。请看一下,看看是否能找到问题:
$err = array();
if (isset($_POST['submit']))
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$date = "2012-02-02 02:02:02"; //Example
$uploader_name = $_POST['uploader_name'];
// Validation happens here...
if (empty($err))
$host = "host";
$dbname = "db";
$user = "user";
$pass = "pass";
try
$dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$sql = "INSERT INTO `table` (`ip`, `date`, `uploader_name`)
VALUES (:ip, :date, :uploader_name)";
$stmt = $dbh->prepare($sql);
# the data we want to insert
$params = array(
':ip' => $ip,
':date' => $date,
':uploader_name' => $uploader_name
);
$stmt->execute($params);
$dbh = null;
catch(PDOException $pe)
die('SQL Error');
if (empty($err))
$err[] = "Success!";
另外,我确定它到达了插入部分,因为我收到了“成功”消息。
【问题讨论】:
【参考方案1】:使用此代码执行您的语句。如果有非致命错误,就会显示出来。
$stmt->execute($params) or die(print_r($stmt->errorInfo(), true));
几乎可以肯定,您的 db 用户没有权限对您尝试执行的表执行您要求的语句。
【讨论】:
谢谢!!问题是一些值是NULL。但它只是“必填”的一些字段,我如何在这些字段中插入空白值? 您必须为要添加到准备好的语句中的每个输入提供验证代码。 if ($myVar === nulll) $myVar = ''; 什么的。 2 年后你是炸弹【参考方案2】:您是否使用自动提交?如果不是,您可能需要将查询包装在事务中。
try
$dbh->beginTransaction();
// your code.
$dbh->commit();
catch(PDOException $pe)
$dbh->rollback();
die($pe->getMessage());
http://php.net/manual/en/pdo.transactions.php
【讨论】:
以上是关于PHP PDO准备插入-不插入数据并且不显示错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章