DELETE后,PHP MySQL插入失败

时间:2012-12-03 05:52:12

标签: php mysql

我有两张桌子。一个是帐户,另一个是利息。 一个帐户可以有多个兴趣,可以编辑。 现在,该流程正在删除此帐户的所有权益,然后插入这些权益。 QUERY IS:

“从兴趣中删除WHERE account_id ='$ id'”

“INSERT INTO兴趣(account_id,interest_name)VALUES('$ id','$ name')”

我在用户更新帐户时使用了这两个查询,但是插入失败,没有任何内容插入到表中(ps.lavorits_id是auto_increment并且这被计算在内)但是表中没有任何新内容。当我注释掉删除查询时。插入将成功。

有人知道我该怎么办?

5 个答案:

答案 0 :(得分:2)

如果要更新表记录,您将执行update操作。 像这样:

UPDATE TABLE_NAME SET FIELD_NAME = 'VARIABLE_NAME' 
  WHERE PRIMERY_FIELD_NAME = 'VARIABLE_NAME' ;

答案 1 :(得分:1)

你不必使用这两个查询,如果你想更新数据只需使用mysql的updat查询。使用:

<?php
$query = "UPDATE Interests SET interest_name = '".$name."' WHERE account_id = '".$id."'" ;
mysql_query($query);
?>

答案 2 :(得分:0)

如果您的查询失败,您应该捕获错误并查看出现了什么问题。在PHP的所有MySQL API中,失败的查询返回状态代码以指示此情况。在文档中很容易找到检查此状态代码的示例。但是大多数开发人员都无法检查状态。


使用事务来确保两个更改一起成功或两者都不应用。

How to Decide to use Database Transactions

MySQL中事务的定义:http://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_transaction

在MySQL中启动和提交事务的语法:http://dev.mysql.com/doc/refman/5.5/en/commit.html

您需要使用InnoDB。 MyISAM不支持交易。 http://dev.mysql.com/doc/refman/5.5/en/innodb-storage-engine.html

在PHP中,您需要停止使用旧的ext / mysql API并开始使用MySQLi或PDO。

http://php.net/manual/en/mysqli.quickstart.transactions.php

http://php.net/manual/en/pdo.begintransaction.php

答案 3 :(得分:0)

如果要更新表记录,则可以执行更新操作。它喜欢以下

UPDATE Interests 
SET 
interest_name = '$name' 
WHERE
accountno = '$id' ;

试试吧。您可以通过这种方式解决您的问题。

答案 4 :(得分:0)

这是因为查询被视为两个单一事务,因此无法保证执行顺序。 您描述的效果是因为插入在删除之前处理​​,因此interests_id正确地自动递增,然后删除语句删除该行。 您应该在一次交易中更改查询逻辑或执行两个查询。