[英]PDO INSERT prepared statement, no errors but data are not inserted
[英]PHP PDO prepared insert - does not insert data and show no errors
這個問題讓我發瘋,我嘗試了一切。 是不是給我任何錯誤,但它也沒有向數據庫插入任何內容。 數據庫連接很好,應該沒有拼寫錯誤。 請看一下,看看你是否能找到問題:
$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!";
}
}
}
此外,我確定它到達插入部分,因為我收到“成功”消息。
使用此代碼執行您的語句。 如果存在非致命錯誤,則會顯示該錯誤。
$stmt->execute($params) or die(print_r($stmt->errorInfo(), true));
幾乎可以肯定,您的db用戶沒有權限執行您要求針對您嘗試執行的表的語句。
你在使用自動提交嗎? 如果不是,您可能需要將查詢包裝在事務中。
try
{
$dbh->beginTransaction();
// your code.
$dbh->commit();
}
catch(PDOException $pe)
{
$dbh->rollback();
die($pe->getMessage());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.