簡體   English   中英

Mysqli准備語句插入不插入

[英]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:sDATETIME列的格式,如果確實如此。

因此你可能需要改變

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM