PHP mysqli语句执行()不起作用

Posted

技术标签:

【中文标题】PHP mysqli语句执行()不起作用【英文标题】:PHP mysqli statement execute() not working 【发布时间】:2017-09-20 01:35:26 【问题描述】:

我没有在 ***.com 上找到同样的东西,所以我发布了我的问题,希望有人知道我的代码或我正在使用的东西有什么问题。

在我开始之前:在我的生产性网站空间中,相同的代码可以工作,问题出在我本地开发服务器的 xampp 安装中...... sigh

我有一个小网络应用程序供我和家人用来记录家里的工作(例如清空垃圾箱),这样我们就可以根据孩子们自己完成的工作量来分配钱(给他们不做作业就得到零用钱)

在我的数据库表中插入一行的代码是:

function AddGarbEntry($DBConnection, $DBPrefix, $UserID, $GarbID)

    $stmt = $DBConnection->prepare("INSERT INTO t_".$DBPrefix."_entries (idUsers,idGarbType) VALUES (?,?)");
    $stmt->bind_param("ii", $UserID, $GarbID);
    $stmt->execute();
    $stmt->close();

我调用这个函数的脚本部分是:

$con = new mysqli($_SESSION["DBHost"], $_SESSION["DBUsername"], $_SESSION["DBPassword"], $_SESSION["Database"]);
AddGarbEntry($con, $DBPrefix, $_POST["user"], $_POST["garbagetype"]);
$con->close();

我已经检查了 Session-Variables(它们都填充了正确的值)和 POST-Values(它们也填充了正确的值)。

在我的MySQL-Log中可以找到以下几行:

170423 11:54:38    66 Connect   rldmla_1@localhost as anonymous on rldmla_db1
           66 Prepare   INSERT INTO t_garb_entries (idUsers,idGarbType) VALUES (? , ?)
           66 Close stmt    
           66 Quit  

所以,我可以看到,prepare 正在工作,但没有迹象表明我的测试服务器运行了 execute()-Command。 php、apache 和 mysql 的错误日志没有关于此的条目。

奇怪的是,如果我使用我网站的特定功能来更新已经存在的行(也是准备好的语句,但更新语句),我的插入代码可以正常工作大约两次,之后它会停止工作直到我再次更新我的表格。

我试过xampp的实际版本(7.1.x)和旧版本(7.0.15),但问题是一样的。 Xampp 在运行 x64 的 Windows Server 2012 机器上作为 x86 版本运行。我只安装了 Apache、PHP 和 MySQL 模块。

我没有任何线索,我做错了什么。任何帮助表示赞赏。

你好,罗尼

【问题讨论】:

$stmt->error; 是否返回任何内容?而且您可能不应该在会话中存储数据库信息,尤其是密码不应该在那里。改用带有定义的文件或从中解析的配置。 可以检查最后一条语句是否有错误。在execute 之后立即使用此printf (" Error:% s. \ N ", $ stmt-> error); 我试过了,但是 stmt->error 是空的 :( 【参考方案1】:

Urks....现在我知道了:

我将我的 Xampp-Installation 更改为基于 linux 的虚拟机,在那里我安装了 Apache、PHP、MySQL 和 phpMyAdmin。之后,缺少的执行行位于 MySql-Logfile 中。

所以,这里无事可做。

感谢@all 支持我:)

你好,罗尼

【讨论】:

以上是关于PHP mysqli语句执行()不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 IP 检查方法不起作用? PHP/Mysqli

mysqli连接在函数内部不起作用? [复制]

PHP MySQLi - WHERE“计算值小于”不起作用

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

函数内部的mysqli / mysql查询不起作用[重复]

为啥php代码不起作用? [复制]