MySQL,PHP和失败的UPDATE Command


MySQL, PHP and failing UPDATE Command

我正在经历一些如此基本但又如此烦人的事情,以至于我认为我必须将其发布给更广泛的社区以挽救我的理智。我正在使用数据库中的表来存储一些非常基本的数据。只有两列,"ID"和"广告系列"。我只想使用表格的一行,但是,广告系列将在各个点更新。我已将表格设置如下:

$sql = "CREATE TABLE IF NOT EXISTS TestCampaign(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Campaign CHAR(20))";

最初,我写到表中以在广告系列中插入空 CHAR:

$sql = "INSERT INTO TestCampaign (Campaign) VALUES ('None')";

基于在 html 表单上填写的特定文本字段,然后按提交按钮,我打算更新活动字段:

$sql = "UPDATE TestCampaign SET Campaign = '$Test' WHERE id = '1'";

$Test是表单中的已发布广告系列名称。不幸的是,尽管插入工作正常,但更新却没有。我已经检查了权限,并且我对此数据库拥有全部权限。我还检查了各种站点的语法,似乎很好。

有趣的是,当我回显时我没有收到错误:

echo " ".mysqli_error($con);

我确定我在某处犯了一些基本错误,但我已经看了很长时间并更改了语法,以至于我似乎无法发现它。任何帮助将不胜感激。

更新:我已经玩过代码,似乎 UPDATE 代码确实有效,但是,它仅在 INSERT 之后的下一行代码时才有效。事实上,我发现只要它不在我需要的地方,它就可以工作。我将其放置在仅在表单上的特定按钮上运行的"if"语句中:

if(isset($_POST['TestID']))
 {
  Some Code;
  $sql = "UPDATE TestCampaign SET Campaign = '$Test' WHERE id = '1'";
  Some More Code;
 }

我已经检查了"if"语句中的其余代码,它看起来很可靠。

这是奇怪的行为还是我错过了什么?

解决终于找出了问题所在,最终结果是,当按预期退出第一个"if"语句时,重新访问了 html 表单代码,该代码必须关闭与数据库的连接,当按下按钮运行第二个"if"语句时,有连接到 MySQL,但没有连接到我需要访问的数据库。快速修复以重新连接,一切正常。

$sql = "UPDATE TestCampaign SET Campaign = '$Test' WHERE id = 1";

是我唯一认为不对的...你得到什么:

Select * from TestCampaign 
您是否根据

此表名设置了任何触发器?更新后,更新触发器之前可能会阻止您在表上存储所需的数据。

此外,如果您在发送插入命令时未指定 id 的值,MySQL 可能会使用 0 作为 id 值。您确定要更新的记录中的 id 值为 1 吗?如果您之前在表上运行过插入语句,由于 MySQL 索引,id 可能大于 1(我想这可能是问题所在)。

我不知道将PHP语句发送到MySQL时如何处理它们,但我建议您使用PDO语句,PHP语法如下所示:

$sql = $pdo->prepare("UPDATE TestCampaign SET Campaign = ? WHERE id = ?");
$sql->bindParam(1, $Test);
$sql->bindParam(2, 1);
$sql->execute();

教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

我还会回显您的$Test变量以检查其中存储的内容。

希望对你有帮助...

终于找出了问题所在,最终结果是,当按预期退出第一个"if"语句时,重新访问了 html 表单代码,该代码必须关闭与数据库的连接,当按下按钮运行第二个"if"语句时,有与 MySQL 的连接,但没有连接到我需要访问的数据库。快速修复以重新连接,一切正常。