MySQL,PHP和UPDATE命令失败

时间:2013-11-16 15:38:16

标签: php mysql sql

我正在经历一些如此基本但又令人讨厌的事情,以为我不得不把它放到更广泛的社区来拯救我的理智。 我在数据库中使用一个表来存储一些非常基本的数据。只有两列,Id和Campaign。我只想使用表格的一行,但广告系列会在各个点进行更新。我按如下方式设置了表格:

$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是表单中的POSTED广告系列名称。不幸的是,尽管INSERT工作正常,UPDATE却没有。我检查了权限,我在这个数据库上有ALL。我还检查了各种网站的语法,似乎没关系。

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

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的连接,但没有连接到我需要访问的数据库。快速修复重新连接,一切正常。

3 个答案:

答案 0 :(得分:0)

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

我认为唯一的问题是错误的......你得到了什么:

Select * from TestCampaign 

答案 1 :(得分:0)

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

另外,如果在发送insert命令时没有指定id的值,MySQL可能会使用0作为id值。您确定要更新的记录中id的值是1吗?如果你之前在表上运行了insert语句,那么id可能是一个大于1的数字,因为MySQL索引(我想这可能是问题)。

我不知道在将它们发送到MySQL时如何处理PHP语句,但我建议您使用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变量来检查它中存储的内容。

希望它有所帮助...

答案 2 :(得分:0)

最后发现问题是什么,最终当按预期退出第一个'if'语句时,重新访问了html表单代码,当按下按钮运行第二个时,必须关闭与数据库的连接'if'语句存在与MySQL的连接但没有与我需要访问的数据库的连接。快速修复重新连接,一切正常。