我已经连接到数据库了。当我回显所有变量时,它们可以工作,但它们不会插入到我的数据库表中。我的表名正确。这是代码:
<?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();
?>
感谢您提前提供任何帮助。
答案 0 :(得分:7)
您有一些不匹配的变量。
$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();
替换为if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}
以捕捉错误。
同时将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
表示未定义的变量警告。
旁注:错误报告应仅在暂存时完成,而不是生产。
洞察
正如幽灵所指出的那样:
$datetime
格式M d, Y
也是可疑的,如果确实如此,它可能会导致Y-m-d H:i:s
列格式DATETIME
。
因此您可能需要更改
$datetime = date("M d, Y");
到
$datetime = date("Y-m-d H:i:s");
或
$datetime = date("Y-m-d");
取决于您的列类型设置的内容。