Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL高级更新查询_Php_Mysql_Sql Update - Fatal编程技术网

Php MySQL高级更新查询

Php MySQL高级更新查询,php,mysql,sql-update,Php,Mysql,Sql Update,我想设置一个图像作为相册的封面,我通过在do-while循环中的无线电输入来选择它。我在images表中放了一个名为is_cover的字段,如果图像设置为cover,则取1,否则取0 <input type="radio" name="cover" value="<?php echo $row_images['image_id']; ?>" <?php if($row_images['is_cover'] == 1){ echo "checked=\"checked\""

我想设置一个图像作为相册的封面,我通过在do-while循环中的无线电输入来选择它。我在images表中放了一个名为is_cover的字段,如果图像设置为cover,则取1,否则取0

<input type="radio" name="cover" value="<?php echo $row_images['image_id']; ?>" <?php if($row_images['is_cover'] == 1){ echo "checked=\"checked\""; } ?> />

您可以在此处运行两个查询,一个将它们全部设置为0,然后将您选择的查询设置为1

您可以在此处运行两个查询,一个将它们全部设置为0,然后将您选择的查询设置为1

这应该对您有帮助:

UPDATE images SET is_cover = CASE WHEN image_id = {$is_cover} THEN 1 ELSE 0 END;
根据我的测试:

mysql> select * from first;
+------+-------+
| id   | title |
+------+-------+
|    1 | aaaa  |
|    2 | bbbb  |
|    3 | cccc  |
|    4 | NULL  |
|    6 | ffff  |
+------+-------+
5 rows in set (0.01 sec)

mysql> update first set title = case when id > 4 then 'gggg' else title end;
Query OK, 1 row affected (0.01 sec)
Rows matched: 5  Changed: 1  Warnings: 0

mysql> select * from first;
+------+-------+
| id   | title |
+------+-------+
|    1 | aaaa  |
|    2 | bbbb  |
|    3 | cccc  |
|    4 | NULL  |
|    6 | gggg  |
+------+-------+
5 rows in set (0.00 sec)

这将为您带来好处:

UPDATE images SET is_cover = CASE WHEN image_id = {$is_cover} THEN 1 ELSE 0 END;
根据我的测试:

mysql> select * from first;
+------+-------+
| id   | title |
+------+-------+
|    1 | aaaa  |
|    2 | bbbb  |
|    3 | cccc  |
|    4 | NULL  |
|    6 | ffff  |
+------+-------+
5 rows in set (0.01 sec)

mysql> update first set title = case when id > 4 then 'gggg' else title end;
Query OK, 1 row affected (0.01 sec)
Rows matched: 5  Changed: 1  Warnings: 0

mysql> select * from first;
+------+-------+
| id   | title |
+------+-------+
|    1 | aaaa  |
|    2 | bbbb  |
|    3 | cccc  |
|    4 | NULL  |
|    6 | gggg  |
+------+-------+
5 rows in set (0.00 sec)

执行以下两个查询:

$query = "UPDATE images SET is_cover = 0 WHERE image_id <> {$is_cover}";

$query = "UPDATE images SET is_cover = 1 WHERE image_id = {$is_cover}";
$query=“更新图像集为\u cover=0,其中图像\u id{$is\u cover}”;
$query=“更新图像集为\u cover=1,其中图像\u id={$is\u cover}”;

第一个查询将所有
都设置为零。第二个查询将所选图像的覆盖设置为1。

执行这两个查询:

$query = "UPDATE images SET is_cover = 0 WHERE image_id <> {$is_cover}";

$query = "UPDATE images SET is_cover = 1 WHERE image_id = {$is_cover}";
$query=“更新图像集为\u cover=0,其中图像\u id{$is\u cover}”;
$query=“更新图像集为\u cover=1,其中图像\u id={$is\u cover}”;

第一个查询将所有
都设置为零。第二个查询将所选图像的
值设置为1。

酷解决方案。我不知道怎么做。这两个查询的好处是什么?数据完整性?效率?@AndyGroff这是一个单一的查询,在本例中,与两个简单的查询相比,没有太大的好处,但是您可以用case语句做更多的事情。您好,我刚刚发现您的查询有一个小问题。更新会影响数据库中的所有行,这是一个问题,至少在我的情况下是这样。更新应仅影响属于特定相册的图像。因此,为了正确执行查询,更新应影响其相册id与其所属相册的相册id相匹配的所有图像。@Lykos22您可以在更新语句中添加
其中someColumn=someVal和someOtherColumn=someOtherVal
。很酷的解决方案。我不知道怎么做。这两个查询的好处是什么?数据完整性?效率?@AndyGroff这是一个单一的查询,在本例中,与两个简单的查询相比,没有太大的好处,但是您可以用case语句做更多的事情。您好,我刚刚发现您的查询有一个小问题。更新会影响数据库中的所有行,这是一个问题,至少在我的情况下是这样。更新应仅影响属于特定相册的图像。因此,为了正确执行查询,更新应该会影响其相册id与其所属相册的相册id相匹配的所有图像。@lykos2您可以在更新语句中添加
其中someColumn=someVal和someOtherColumn=someOtherVal