[英]Mysqli Prepare Statement Insert Not Inserting
我已經連接到數據庫了。 當我回顯所有變量時,它們可以工作,但它們不會插入到我的數據庫表中。 我的表名正確。 這是代碼:
<?php
$pid = '1';
$pname = 'name';
$poster_id = '2';
$poster_name = 'name2';
$message = 'This is the message';
$datetime = date("M d, Y");
// insert into database
$ins = "INSERT INTO messages (profile_id, profile_name, poster_id, poster_name, message, countnum, postdate) VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $con->prepare($ins);
$num = 1;
$stmt->bind_param('isissis', $pid, $pname, $user_id, $user, $comment, $num, $datetime);
$stmt->execute();
?>
在此先感謝您的幫助。
你有一些不匹配的變量。
$poster_id
- $poster_name
- $message
在你的綁定中與之對齊:
$user_id, $user, $comment
這應該現在有效:
<?php
$pid = '1';
$pname = 'name';
$poster_id = '2';
$poster_name = 'name2';
$message = 'This is the message';
$datetime = date("M d, Y");
// insert into database
$ins = "INSERT INTO messages (profile_id, profile_name, poster_id, poster_name, message, countnum, postdate) VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $con->prepare($ins);
$num = 1;
$stmt->bind_param('isissis', $pid, $pname, $poster_id, $poster_name, $message, $num, $datetime);
$stmt->execute();
?>
但是,你應該替換$stmt->execute();
with if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}
為了抓住錯誤。
還要在文件頂部添加錯誤報告 ,這有助於查找錯誤。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
這將發出一個未定義的變量警告信號。
旁注:錯誤報告應該只在暫存中完成,而不是生產。
洞察力
正如Ghost所指出的那樣:
$datetime
格式M d, Y
也是可疑的,它可能搞砸了Ymd H:i:s
的DATETIME
列的格式,如果確實如此。
因此你可能需要改變
$datetime = date("M d, Y");
至
$datetime = date("Y-m-d H:i:s");
要么
$datetime = date("Y-m-d");
取決於列類型的設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.