За последние 24 часа нас посетили 17855 программистов и 1651 робот. Сейчас ищет 931 программист ...

Ошибка в mysql_fetch_array при выборке по условию...

Тема в разделе "PHP и базы данных", создана пользователем Hexagon, 11 май 2011.

  1. Hexagon

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

    С нами с:
    28 апр 2011
    Сообщения:
    10
    Симпатии:
    0
    Зараннее прошу прошение если ошибка нубская, но только начал ковырять PHP
    Столкнулся с проблемой

    при запросе:
    SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM Grup_KievMain
    Все работает нормально.
    но если добавить выборку по фамилии скажем:
    SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM Grup_KievMain WHERE F_I_O_TableName LIKE '%Иванов%'
    выдает следующую ошибку:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\phone.elit\www\MainListFind.php on line 86
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in Z:\home\phone.elit\www\MainListFind.php on line 125


    Кусок кода:

    Код (Text):
    1.  
    2. $result = mysql_query("SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM ".$TableCurrentGroup. "".$FindStringADD."");
    3.     // Цикл вывода данных в таблицу
    4.     while ($row = mysql_fetch_array($result, MYSQL_NUM)) {  // ОШИБКА                
    5.     ....   
    6.     }
    7.     mysql_free_result($result); // ОШИБКА
    p.s: Переменные $TableCurrentGroup и $FindStringADD имеют коректные значения.
    p.p.s: Запрос "SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM Grup_KievMain WHERE F_I_O_TableName LIKE '%Иванов%'" в MySQL отрабатывает без ошибок. Затык точно mysql_fetch_array() но как исправить незнаю.
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    PHP:
    1. <?php
    2.  
    3. $result = mysql_query("SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM ".$TableCurrentGroup. "".$FindStringADD."") or die(mysql_error());
    4.  
    5.  
     
  3. Hexagon

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

    С нами с:
    28 апр 2011
    Сообщения:
    10
    Симпатии:
    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 'LIKE '%%'' at line 1

    Что самое смешное - через MySQL запрос понимает корректно, и выбирает из таблици по сказанному условию =( Цирк.

    скрин с запросом
    [​IMG]
     
  4. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    ясно же видно, что %тут_должно_быть_что-то% для поиска. похоже, что у тебя оно не поступает в коде, либо сам не задаёшь.
     
  5. Hexagon

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

    С нами с:
    28 апр 2011
    Сообщения:
    10
    Симпатии:
    0
    проблему решил. Было достаточно заткнуть все значение запроса в переменную. типа:
    $sql = "SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM ".$TableCurrentGroup."".$FindStringADD."";

    и потом

    $result = mysql_query($sql) or die(mysql_error());

    в результате все отрабатывает без ошибок. В чем причина - незнаю. Возможно перегруженность строки - другое в голову не приходит.
     
  6. Hexagon

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

    С нами с:
    28 апр 2011
    Сообщения:
    10
    Симпатии:
    0
    При пустом запросе должно (и выводит) все строки таблици :)
     
  7. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    как видишь, ты ошибался. обычно отладка запросов производится довольно просто,
    примерно так (используя доп. возможности строки в двойных кавычках):

    PHP:
    1. <?php
    2. $sql = "SELECT id, F_I_O_TableName, E_Mail, TelNum1, TelNum2, TelNum3, TelNum4, TelNum5, CityTable FROM {$TableCurrentGroup}{$FindStringADD}";
    3. echo 'Попробуй выполнить данный код в PhpMyAdmin:<h2>'.$sql.'</h2>'; exit();
    4. $result = mysql_query($sql) or die(mysql_error());
     
  8. Hexagon

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

    С нами с:
    28 апр 2011
    Сообщения:
    10
    Симпатии:
    0
    Ну теперь буду знать где может возникнуть затык :) Всетаки практику еще ничем нельзя заменить... Множество нюансов, многие из которых проходят как само-собой разумеющееся :) Ничего - будем грызть дальше :):):)