这个问题让我发疯,我尝试了一切。是不是给我任何错误,但它也没有向数据库插入任何内容。数据库连接很好,应该没有拼写错误。请看一下,看看你是否能找到问题:
$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!";
}
}
}
另外,我确定它会进入插入部分,因为我收到了“成功”消息。
答案 0 :(得分:10)
使用此代码执行您的陈述。如果存在非致命错误,则会显示该错误。
$stmt->execute($params) or die(print_r($stmt->errorInfo(), true));
几乎可以肯定,您的数据库用户没有权限执行您针对您尝试执行的表执行的语句。
答案 1 :(得分:2)
您使用的是自动提交吗?如果不是,您可能需要将查询包装在事务中。
try
{
$dbh->beginTransaction();
// your code.
$dbh->commit();
}
catch(PDOException $pe)
{
$dbh->rollback();
die($pe->getMessage());
}