За последние 24 часа нас посетили 16952 программиста и 1294 робота. Сейчас ищет 1481 программист ...

php+mysql. Ошибка в скрипте.

Тема в разделе "MySQL", создана пользователем lex099, 17 ноя 2006.

  1. lex099

    lex099 Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    21
    Симпатии:
    0
    PHP:
    1.  
    2. <?
    3. $link = mysql_connect("localhost", "root", "") or die ("Could not connect to MySQL");
    4. mysql_select_db ("test") or die ("Could not select database");
    5.  
    6.  
    7.   if (isset($_GET['Name'])){
    8.  
    9.      $str_exp = explode(".",$_GET['Name']);
    10.      for($x=0; $x<count($str_exp); $x++){
    11.  
    12.  
    13.  
    14.       $a=$str_exp[$x];
    15.       $query = "UPDATE a1 SET pr='1' WHERE id=$a";
    16.       $result = mysql_query ($query) or die ("Query failed0");
    17.       Echo "$str_exp[$x] <br>";
    18.      }
    19.  
    20.      }
    21. $query = "UPDATE a1, a2 SET a2.kr =' ' WHERE a2.id = a1.id AND a1.pr=1 and a2.kr ='<font color=red>0</font>' ;";
    22. $result = mysql_query ($query) or die ("Query failed1");
    23.  
    24.  
    25.  
    26.  
    27. ?>
    28.  
    Query failed1!!!!

    в чём я опять накосячил?
     
  2. Для отладки вместо Query failed1 надо выводить на экран сам запрос.
    чтобы смотреть - что в нём не так.
    и сообщение mysql об ошибке
     
  3. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. echo mysql_error();
     
  4. Anonymous

    Anonymous Guest

    ; - лишняя. Устал — отдохни. Выпей чаю. )
     
  5. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Олег, не имеет значения....после СКЙЛ запроса надо ставить ";"
     
  6. Anonymous

    Anonymous Guest

    NIKO, проверил? =)
     
  7. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    $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!!!
     
  8. Anonymous

    Anonymous Guest

    Goryn, ух ты? Правда?
    Каюсь, сам не знал... =(
     
  9. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. mysql> CREATE TABLE `upd_test` (
    2.     -> `id` TINYINT NOT NULL,
    3.     -> `value` VARCHAR(10) NOT NULL);
    4. Query OK, 0 rows affected (0.22 sec)
    5.  
    6. mysql> INSERT INTO `upd_test` (`id`,`value`) VALUES (1, "12345");
    7. Query OK, 1 row affected (0.05 sec)
    8.  
    9. mysql> SELECT * FROM `upd_test`;
    10. +----+-------+
    11. | id | value |
    12. +----+-------+
    13. |  1 | 12345 |
    14. +----+-------+
    15. 1 row in set (0.00 sec)
    16.  
    17. mysql> UPDATE `upd_test` SET `id`=2 WHERE `id`=1;
    18. Query OK, 1 row affected (0.05 sec)
    19. Rows matched: 1  Changed: 1  Warnings: 0
    20.  
    21. mysql> SELECT * FROM `upd_test`;
    22. +----+-------+
    23. | id | value |
    24. +----+-------+
    25. |  2 | 12345 |
    26. +----+-------+
    27. 1 row in set (0.00 sec)
    что я делаю не так? MySQL, version 5.0.22
     
  10. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    У тебя пример с одной таблицей, попробуй с двумя.
     
  11. Anonymous

    Anonymous Guest

    Скорее всего, дело вот в чем:
    Нельзя делать UPDATE к двум таблицам.
     
  12. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    в продолжение к первой созданной таблице:
    Код (Text):
    1. mysql> CREATE TABLE `upd_test2` (
    2.     -> `id` TINYINT NOT NULL,
    3.     -> `value` VARCHAR(10) NOT NULL);
    4. Query OK, 0 rows affected (0.14 sec)
    5.  
    6. mysql> INSERT INTO `upd_test2` (`id`, `value`) VALUES (2, "54321");
    7. Query OK, 1 row affected (0.03 sec)
    8.  
    9. mysql> UPDATE `upd_test`, `upd_test2` SET `upd_test2`.`value`="" WHERE `upd_test`.`id`=`upd_test2`.`id` AND `upd_test2`.`value`="54321";
    10. Query OK, 1 row affected (0.03 sec)
    11. Rows matched: 1  Changed: 1  Warnings: 0
    12.  
    13. mysql> SELECT * FROM `upd_test2`;
    14. +----+-------+
    15. | id | value |
    16. +----+-------+
    17. |  2 |       |
    18. +----+-------+
    19. 1 row in set (0.00 sec)
     
  13. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Сорррри, не уточнил! С константой изменяемое поле сравнивать можно. Нельзя по этому полю строить связь с другой таблицей.
     
  14. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    в продолжение темы:
    Код (Text):
    1. mysql> UPDATE `upd_test`, `upd_test2` SET `upd_test2`.`id`=3 WHERE `upd_test`.`id`=`upd_test2`.`id` AND `upd_test2`.`value`="";
    2. Query OK, 1 row affected (0.02 sec)
    3. Rows matched: 1  Changed: 1  Warnings: 0
    4.  
    5. mysql> SELECT * FROM `upd_test2`;
    6. +----+-------+
    7. | id | value |
    8. +----+-------+
    9. |  3 |       |
    10. +----+-------+
    11. 1 row in set (0.00 sec)
    Goryn, опять вы не правы.
     
  15. lex099

    lex099 Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    21
    Симпатии:
    0
    Кстати, этот запрос работает!
     
  16. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Да, чен-то я лоханулся не по детски со своими утверждениями, извиняюсь!!! Но подсознательно помню, что есть какое то ограничение в Update, а точную формулировку вспомнить не могу :?