Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP mysqli Insert不工作,但未给出任何错误_Php_Mysql_Insert_Mysqli - Fatal编程技术网

PHP mysqli Insert不工作,但未给出任何错误

PHP mysqli Insert不工作,但未给出任何错误,php,mysql,insert,mysqli,Php,Mysql,Insert,Mysqli,正如标题所说,我试图做一个简单的插入,但实际上没有插入到表中。我试图打印出错误,但没有任何报告 “我的用户”表中的字段比这4个字段多得多,但它们都应该是默认值 $query = 'INSERT INTO users (username, password, level, name) VALUES (?, ?, ?, ?)'; if($stmt = $db -> prepare($query)) { $stmt -> bind_param('ssis', $username,

正如标题所说,我试图做一个简单的插入,但实际上没有插入到表中。我试图打印出错误,但没有任何报告

“我的用户”表中的字段比这4个字段多得多,但它们都应该是默认值

$query = 'INSERT INTO users (username, password, level, name) VALUES (?, ?, ?, ?)';
if($stmt = $db -> prepare($query))
{
    $stmt -> bind_param('ssis', $username, $password, $newlevel, $realname);
    $stmt -> execute();
    $stmt -> close();
    echo 'Any Errors: '.$db->error.PHP_EOL;
}
没有给出错误,但是当我查看phpmyadmin中的表时,没有添加新行。我确信类型是正确的(字符串和整数)。这里真的有什么不对的地方吗?或者这与我忽略了其他专栏这一事实有关。用户表中大约有8列。

检查是否正在打印字符串“anyerrors”。如果没有,则声明:

if ($stmt = $db->prepare($query))

返回值为false。您应该移动
echo'anyerrors:'。$db->error.PHP\u EOL在条件块之外。

是否在条件块之前初始化$username、$password、$newlevel、$realname的值
$stmt->execute();陈述否则,您必须初始化并尝试

您必须在流程的每个阶段检查错误:连接时、准备语句时、绑定时、执行时和关闭时。在您的代码中,假设正确创建了
$db
句柄,那么错误检查将在
->close()
调用之后进行,该调用应该会成功,因此此时不会出现任何错误

沿着这条线的一些东西将显示事情发生的地方:

$query = 'INSERT INTO users (username, password, level, name) VALUES (?, ?, ?, ?)';
$stmt = $db->prepare($query);
echo 'prepare error: ', $db->error, PHP_EOL;
$stmt->execute();
echo 'execute error: ', $db->error
etc....

试试这个代码。如果查询成功执行,它将显示“Inserted successfully”(插入成功),否则它将显示错误。

如果已关闭自动提交,则在执行查询后必须显式调用提交方法

$stmt->execute();
$db->commit();
$stmt->close();

你有没有检查过你是否真的有联系?“选择”有效吗?另外,$username、$password、$newlevel和$realname的值是多少?它们都设置正确了吗?PHP网站上的文档不符合您的要求。
$stmt->execute();
$db->commit();
$stmt->close();