“从兴趣中删除WHERE account_id ='$ id'”
“INSERT INTO兴趣(account_id,interest_name)VALUES('$ id','$ name')”
我在用户更新帐户时使用了这两个查询,但是插入失败,没有任何内容插入到表中(ps.lavorits_id是auto_increment并且这被计算在内)但是表中没有任何新内容。当我注释掉删除查询时。插入将成功。
有人知道我该怎么办?
答案 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。
答案 3 :(得分:0)
如果要更新表记录,则可以执行更新操作。它喜欢以下
UPDATE Interests
SET
interest_name = '$name'
WHERE
accountno = '$id' ;
试试吧。您可以通过这种方式解决您的问题。
答案 4 :(得分:0)
这是因为查询被视为两个单一事务,因此无法保证执行顺序。
您描述的效果是因为插入在删除之前处理,因此interests_id
正确地自动递增,然后删除语句删除该行。
您应该在一次交易中更改查询逻辑或执行两个查询。