PHP: <? $link = mysql_connect("localhost", "root", "") or die ("Could not connect to MySQL"); mysql_select_db ("test") or die ("Could not select database"); if (isset($_GET['Name'])){ $str_exp = explode(".",$_GET['Name']); for($x=0; $x<count($str_exp); $x++){ $a=$str_exp[$x]; $query = "UPDATE a1 SET pr='1' WHERE id=$a"; $result = mysql_query ($query) or die ("Query failed0"); Echo "$str_exp[$x] <br>"; } } $query = "UPDATE a1, a2 SET a2.kr =' ' WHERE a2.id = a1.id AND a1.pr=1 and a2.kr ='<font color=red>0</font>' ;"; $result = mysql_query ($query) or die ("Query failed1"); ?> Query failed1!!!! в чём я опять накосячил?
Для отладки вместо Query failed1 надо выводить на экран сам запрос. чтобы смотреть - что в нём не так. и сообщение mysql об ошибке
$query = "UPDATE a1, a2 SET a2.kr =' ' WHERE a2.id = a1.id AND a1.pr=1 and a2.kr ='<font color=red>0</font>' ;"; Нельзя изменять значение поля, которое используется в Where!!!
Код (Text): mysql> CREATE TABLE `upd_test` ( -> `id` TINYINT NOT NULL, -> `value` VARCHAR(10) NOT NULL); Query OK, 0 rows affected (0.22 sec) mysql> INSERT INTO `upd_test` (`id`,`value`) VALUES (1, "12345"); Query OK, 1 row affected (0.05 sec) mysql> SELECT * FROM `upd_test`; +----+-------+ | id | value | +----+-------+ | 1 | 12345 | +----+-------+ 1 row in set (0.00 sec) mysql> UPDATE `upd_test` SET `id`=2 WHERE `id`=1; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM `upd_test`; +----+-------+ | id | value | +----+-------+ | 2 | 12345 | +----+-------+ 1 row in set (0.00 sec) что я делаю не так? MySQL, version 5.0.22
в продолжение к первой созданной таблице: Код (Text): mysql> CREATE TABLE `upd_test2` ( -> `id` TINYINT NOT NULL, -> `value` VARCHAR(10) NOT NULL); Query OK, 0 rows affected (0.14 sec) mysql> INSERT INTO `upd_test2` (`id`, `value`) VALUES (2, "54321"); Query OK, 1 row affected (0.03 sec) mysql> UPDATE `upd_test`, `upd_test2` SET `upd_test2`.`value`="" WHERE `upd_test`.`id`=`upd_test2`.`id` AND `upd_test2`.`value`="54321"; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM `upd_test2`; +----+-------+ | id | value | +----+-------+ | 2 | | +----+-------+ 1 row in set (0.00 sec)
Сорррри, не уточнил! С константой изменяемое поле сравнивать можно. Нельзя по этому полю строить связь с другой таблицей.
в продолжение темы: Код (Text): mysql> UPDATE `upd_test`, `upd_test2` SET `upd_test2`.`id`=3 WHERE `upd_test`.`id`=`upd_test2`.`id` AND `upd_test2`.`value`=""; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM `upd_test2`; +----+-------+ | id | value | +----+-------+ | 3 | | +----+-------+ 1 row in set (0.00 sec) Goryn, опять вы не правы.
Да, чен-то я лоханулся не по детски со своими утверждениями, извиняюсь!!! Но подсознательно помню, что есть какое то ограничение в Update, а точную формулировку вспомнить не могу :?