PHP mysqli插入不起作用,但没有给出任何错误

Posted

技术标签:

【中文标题】PHP mysqli插入不起作用,但没有给出任何错误【英文标题】:PHP mysqli Insert not working, but not giving any errors 【发布时间】:2011-02-10 06:40:40 【问题描述】:

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

我的 users 表的字段比这 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 列。

【问题讨论】:

您是否检查过以确保您确实已连接? “SELECT”有效吗? 另外,$username、$password、$newlevel 和 $realname 的值是多少?它们都设置正确了吗? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

您必须在流程的每个阶段检查错误:连接时、准备语句时、绑定时、执行时以及关闭时。在您的代码中,假设 $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....

【讨论】:

【参考方案3】:

检查是否正在打印字符串“任何错误”。如果不是,那么语句:

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

返回 false。您应该将echo 'Any Errors: '.$db->error.PHP_EOL; 移到条件块之外。

【讨论】:

【参考方案4】:

你是否初始化了 $username, $password, $newlevel, $realname 在 $stmt -> 执行();陈述。否则你必须初始化并尝试

【讨论】:

PHP 网站上的文档不同意您的观点。 php.net/manual/en/mysqli-stmt.bind-param.php【参考方案5】:
$query = 'INSERT INTO users (username, password, level, name) VALUES (?, ?, ?, ?)'; 
if($stmt = $db -> prepare($query))

     $stmt -> bind_param('ssis', $username, $password, $newlevel, $realname);

    $username='testname';$password='testpwd';$level=5;$realname='testrealname';

         $stmt -> execute(); echo "inserted SuccessFully";  $stmt -> close();  
else  printf("Prepared Statement Error: %s\n", $mysqli->error); 

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

【讨论】:

以上是关于PHP mysqli插入不起作用,但没有给出任何错误的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中为 MATCH AGAINST 准备的语句不起作用

php/mysqli 查询未执行某些查询且没有错误

PHP MySQLi没有插入到表中

POST 方法不起作用但未显示任何错误

mysqli查询成功但给出错误号0 [关闭]

无法使用 php 在数据库中插入值