За последние 24 часа нас посетил 20221 программист и 1704 робота. Сейчас ищут 1934 программиста ...

MAX(id) и Insert

Тема в разделе "PHP и базы данных", создана пользователем Julia, 13 июн 2010.

  1. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    1. Не могу выделить максимальный id
    echo $im['id']; выводит Array

    2. Не работает INSERT, хотя сам поиск работает, но новую строку в таблицу не хочет вставлять ни в какую. $dar оказывается пустым. Подскажите с чем это может быть связано


    PHP:
    1. <?php
    2.  
    3. //$imax = mysql_query("SELECT * FROM rooms",$db);
    4.  
    5. $imax = "SELECT MAX(id) FROM `rooms`";
    6. $imi=mysql_query($imax);
    7. $im = mysql_fetch_array($imi);
    8.  
    9. $j=50;
    10.  
    11. for($i=1;$i<=$im['id'];$i++){
    12. echo "i=".$i."<br>";
    13.  
    14. $res=mysql_query("select * from `rooms` where id='$i'");
    15.  
    16.  
    17.  
    18. $row=mysql_fetch_array($res);
    19.  
    20. echo $row["ZRAIONID"];
    21.  
    22.  
    23.  
    24.  
    25. $sql="SELECT id FROM `rooms1` WHERE ZRAIONID='$row[ZRAIONID]' AND ZVSTREET='$row[ZVSTREET]' AND ZVPRICE='$row[ZVPRICE]'";
    26. $sql_1 = mysql_query($sql);
    27. $sql_2 = mysql_fetch_array($sql_1);
    28.  
    29.  
    30. if($sql_2[id]!="")
    31. { echo $sql_2["id"]."<br>";
    32.  
    33.  
    34. }
    35. else{
    36. $dar=mysql_query("INSERT INTO 'rooms1' ('id', 'ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', 'ZAAREA', 'ZRAREA', 'ZKAREA', 'ZVSTREET', 'ZRAIONID', 'ZWCID', 'ZVBAL', 'ZPHONEID', 'O.ZMISC', 'ZVAGPH', 'ZVAGENT', 'img1', 'img2', 'img3') VALUES ('$j', '$row[ZVPRICE]', '$row[ZEQPRICE]', '$row[ZVTH]', '$row[ZSTAGE]', '$row[ZHSTAGE]', '$row[ZMATERID]', '$row[ZAAREA]','$row[ZRAREA]', '$row[ZKAREA]', '$row[ZVSTREET]', '$row[ZRAIONID]', '$row[ZWCID]', '$row['ZVBAL']', '$row[ZPHONEID]', '$row['O.ZMISC']', '$row[ZVAGPH]', '$row[ZVAGENT]', 0, 0, 0)");
    37. print_r ($dar);
    38. echo ("no")."<br>";
    39. $j=$j+1;
    40. }
    41.  
    42.  
    43. //$r=mysql_fetch_array(mysql_query($sql));
    44.  
    45.  
    46.  
    47. }
    48.  
    49. ?>
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я не буду работать с вашим кодом, но дам наводку.
    Итак, max(`id`)

    PHP:
    1. <?php
    2.  
    3. $id = mysql_fetch_object(mysql_query("SELECT MAX(id) FROM `rooms`"))->id;
    4.  
    5. ?>
    с insert даже смотреть не буду - каша кашей.
    Смотрите ошибку, которую любезно даёт СУБД.
     
  3. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
  4. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я не волшебник.
    Ошибки давайте, ошибки.
     
  5. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    [sql]SELECT MAX(id) FROM `rooms` [/sql]

    В MySQL работает верно

    PHP:
    1. $id = mysql_fetch_object(mysql_query("SELECT MAX(id) FROM `rooms`"))->id;
    2. print_r($id);
    3.  
    4. echo mysql_error($id) . "\n";
    Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in Z:\home...input3.php on line 21
     
  6. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Значит смотреть, что возвращает mysql_query.
    Я так вижу, что он возвращает false, значит - таблица пуста или её нет?
     
  7. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Таблица есть и она не пуста
    В MySQL SELECT MAX(id) FROM `rooms` возвращает 25

    PHP:
    1. $id = mysql_query("SELECT MAX(id) FROM `rooms`");
    2. print_r($id);
    3.  
    4. echo mysql_error($id) . "\n";
    Resource id #3
    Warning: mysql_error(): supplied resource is not a valid MySQL-Link resource in Z:\home...input3.php on line 22

    PHP:
    1.  
    2. $id = mysql_fetch_object(mysql_query("SELECT MAX(id) FROM `rooms`"));
    3. print_r($id);
    4.  
    5. echo mysql_error($id) . "\n";

    stdClass Object ( [MAX(id)] => 25 )
    Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in Z:\home...input3.php on line 22
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    блин, я чет сонный.

    Короче не надо передавать функции mysql_error переменную $id.
    Она принимает идентификатор, не ресурс, который возвращает mysql_query.
    Вызови mysql_error БЕЗ аргументов.
     
  9. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    PHP:
    1. $id = mysql_query("SELECT MAX(id) FROM `rooms`");
    2. print_r($id);
    3.  
    4. echo mysql_error();
    Вообще пусто, не ошибок ничего
    Resource id #3 Только это
     
  10. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Значит ошибок нет.
    Итак, поехали.

    PHP:
    1. <?php
    2.  
    3. $query = mysql_query("SELECT MAX(id) FROM `rooms`");
    4. $found = mysql_num_rows($id);
    5.  
    6. echo $found;
    7.  
    8. ?>
    Дальше смотрим кол-во строк.
    Должна быть одна и только одна.
    Я - сонный и не заметил кое-какого нюанса. смотрите сюда:

    PHP:
    1. <?php
    2.  
    3. $query = mysql_query("SELECT MAX(id) as `id` FROM `rooms`");
    4.  
    5. // И только теперь
    6. $id = mysql_fetch_object($query)->id;
    7.  
    8. echo $id;
    9.  
    10. ?>
     
  11. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Спасибо огромное, работает)

    Осталось только с Insert разобраться(
     
  12. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ладно, помогу =)

    Видите у вас mysql_query с командой insert?
    Замените mysql_query на echo и посмотрите, что получается на выходе, т.е готовый запрос.
    Так будет легче найти реальную ошибку в уже готовом запросе.
     
  13. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''rooms1' ('id', 'ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', ' at line 1no
     
  14. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Julia
    Если вы всё равно перечисляете все поля, то можно полностью переписать запрос insert.
    Т.е шаблон такой:
    [sql]INSERT INTO `table_name` VALUES ( ... данные в очередности столбцов .. )[/sql]
    Мне влом копаться в коде выше, поэтому говорю по ходу.
     
  15. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    PHP:
    1. $dar=("INSERT INTO 'rooms1' ('id', 'ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', 'ZAAREA', 'ZRAREA', 'ZKAREA', 'ZVSTREET', 'ZRAIONID', 'ZWCID', 'ZVBAL', 'ZPHONEID', 'O.ZMISC', 'ZVAGPH', 'ZVAGENT', 'img1', 'img2', 'img3') VALUES ('$j', {$row['ZVPRICE']}, {$row['ZEQPRICE']}, {$row['ZVTH']}, {$row['ZSTAGE']}, {$row['ZHSTAGE']}, {$row['ZMATERID']}, {$row['ZAAREA']},{$row['ZRAREA']}, {$row['ZKAREA']}, {$row['ZVSTREET']}, {$row['ZRAIONID']}, {$row['ZWCID']}, {$row['ZVBAL']}, {$row['ZPHONEID']}, {$row['O.ZMISC']}, {$row['ZVAGPH']}, {$row['ZVAGENT']}, 0, 0, 0)") ;
    2. echo $dar;
    3. echo mysql_error();
    INSERT INTO 'rooms1' ('id', 'ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', 'ZAAREA', 'ZRAREA', 'ZKAREA', 'ZVSTREET', 'ZRAIONID', 'ZWCID', 'ZVBAL', 'ZPHONEID', 'O.ZMISC', 'ZVAGPH', 'ZVAGENT', 'img1', 'img2', 'img3') VALUES ('50', 1100 тыс.руб., 1100, Купеч, 2, 2, Кирпичный, 120,23, 0, Алексеевская ул., 1-Нижегородский р-н., cовмещенный, -, -, комната в отличном состоянии, свой санузел, чист.пр., сот. 8-902-306-72-64, Бочкарева Нина Владиленовна, 0, 0, 0)

    Вроде все так, ошибки нет
     
  16. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    такое поле точно есть?
     
  17. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    конечно есть
    Запросы вроде верные, а в базу не вставляет
     
  18. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    название у поля именно с точкой?
     
  19. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
  20. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ну лично я не вижу, что этот запрос верный.
    Во-первых, значения полей не в кавычак, во-вторых, непонятные дефисы в качестве значений.
     
  21. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Тогда такой вопрос
    Вот этот запрос из консоли mysql выполняется нормально?
     
  22. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
  23. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
  24. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Кстааати, только что заметил глобальнейшую ошибку.

    Я кажется понял, зачем выбирать MAX(`id`).
    Поле `id` должно быть первычным ключом с авто инкрементированием.
    Никаких MAX(`id`).
    Очередной workaround из-за банального незнания.
     
  25. Julia

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

    С нами с:
    13 июн 2010
    Сообщения:
    25
    Симпатии:
    0
    Т.е. MAX('id') нельзя использовать как условие конца цикла?


    Возможно у Вас ошибка в SQL-парсере. Пожалуйста, проверьте внимательно Ваш запрос и соответствие кавычек. Возможно также, что Вы пытаетесь закачать бинарный файл вне поля quoted text area.
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''rooms1' ('id', 'ZVPRICE', 'ZEQPRICE', 'ZVTH', 'ZSTAGE', 'ZHSTAGE', 'ZMATERID', ' at line 1