Mysql中的UPDATE查询不起作用

时间:2015-02-05 06:01:58

标签: php mysql

我在Mysql-

中遇到了我的UPDATE查询问题
mysql_query( INSERT INTO `cost`  
             SET `cat_id` = '18', `feature_id` = '77', `type_id` = '5', 
                 `cost_from` = '600', `cost_to` = '800'  
             WHERE `type_id` = 5 && `cat_id` = 18 && `feature_id` = 77");

type_id = 5不在我当前的表中,我想设置我的新值 结果是不成功。

我还尝试了相同的

的UPDATE查询
mysql_query( Update `cost` 
             SET `cat_id` = '18', `feature_id` = '77', `type_id` = '5', 
                 `cost_from` = '600', `cost_to` = '800' 
             WHERE `type_id` = 5 && `cat_id` = 18 && `feature_id` = 77");

如何同时插入和更新值?

2 个答案:

答案 0 :(得分:1)

注意:

  • 您不能在INSERT查询中使用WHERE和SET。
  • 确保您有一个名为cost的表格以及cat_idfeature_idcost_fromcost_totype_id列。< / LI>
  • 您正在尝试使用您要查找的列更新cost表格列。似乎不对。
  • 您的第一个和第二个给定的示例代码具有相同的格式,您刚刚更改了第一个单词INSERTUPDATE。不这样做。

您可以,我认为所有会看到您的代码的人的建议,使用mysql_* prepared statements创建更好的查询。

INSERT查询的一个简单示例如下所示:

/* PREPARE YOUR QUERY */
$stmt = $con->prepare("INSERT INTO cost (cat_id, feature_id, type_id, cost_from, cost_to) VALUES (?,?,?,?,?)");

/* BIND PARAMETER TO THE QUERY. REPLACE NECESSARY VALUE OR VARIABLE */
$stmt->bind_param('iiiss', $catid,$featureid,$typeid,$costfrom,$costto); 

$stmt->execute(); /* EXECUTE QUERY */

UPDATE查询的一个简单示例:

/* PREPARE YOUR QUERY */
$stmt = $con->prepare("UPDATE cost SET cat_id=?, feature_id=?, type_id=?, cost_from=?, cost_to=? WHERE id=?");

/* BIND PARAMETER TO THE QUERY. REPLACE NECESSARY VALUE OR VARIABLE */
$stmt->bind_param('iiissi', $catid,$featureid,$typeid,$costfrom,$costto,$id); 

$stmt->execute(); /* EXECUTE QUERY */

答案 1 :(得分:0)

首先,您不能将'set'与'insert into'一起使用,如果您想同时插入和更新查询,那么您最好的选择是使用事务。 (你必须在事务中包含插入和更新查询),你不能将它们都包含在一个sql语句中。

这篇文章可能会对你有帮助  SQL Update,Delete And Insert In Same Time