Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Ошибка в запросе MySQL


Автор: slang 8.2.2007, 21:09
Код

$sql = "SELECT * FROM `ss_strucsotr` ORDER BY `title` ASC;";
    print "<BR>$sql;";
    if ($result = mysql_query($sql))    {
        while ($row[] = mysql_fetch_assoc($result)) {
         //Новая строка добавлена в массив $row
        }
        array_splice ($row, count($row)-1);
        mysql_free_result($result);
        return $row;
    }
    else {
        print "<BR>" . mysql_error();
        print "<BR>$sql<BR>";
        return false;
    }

выводит:
Код

SELECT * FROM `ss_strucsotr` ORDER BY `title` ASC;
Table 'ss.ss_strucsotr' doesn't exist
SELECT * FROM `ss_strucsotr` ORDER BY `title` ASC

здесь ss. - как я понял показывает имя базы.
Вообще не понятка какая-то. Использую денвер, пробовал перезапустить его, не помогло.

Автор: slang 8.2.2007, 21:29
Попробовал перенести на другой хостинг, тоже самое. значит косяк где то здесь зарыт, но ни как не вижу его.
До и После этого запроса все остальные к другим таблицам выполняются нормально.
Пробовал переименовывать таблицу и менять ее структуру.
Код

$dbname = 'ss';
$result = mysql_list_tables($dbname);
if (!$result) {
print "DB Error, could not list tables\n";
print 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_row($result)) {
print "<BR>Таблица: $row[0]";
}
mysql_free_result($result);

показывает эту таблицу, а в запросе SELECT не может ее найти.

Автор: -=Ustas=- 8.2.2007, 22:32
slang, тебе же тут по-русски написано
Код

Table 'ss.ss_strucsotr' doesn't exist

Таблицы не существует!

Автор: slang 8.2.2007, 22:34
-=Ustas=-, в этом то и проблема, что она существует!!! и в коде выше она показана!!!  smile 

Автор: slang 8.2.2007, 22:57
Код

function cc($id="")    {
// проверка
    $dbname = 'ss';
    $result = mysql_list_tables($dbname);
    if (!$result) {
        print "DB Error, could not list tables<BR>";
        print 'MySQL Error: ' . mysql_error();
        exit;
    }
    while ($row = mysql_fetch_row($result)) {
        print "<BR>Таблица: $row[0]";
    }
    mysql_free_result($result);
    $sql = "SELECT * FROM ss_struc_sotr";
    $result = mysql_query($sql);
    print '<BR>MySQL Error: ' . mysql_error();
    print $result;
}

выводит:
Таблица: ss_people
Таблица: ss_people_pos
Таблица: ss_struc
Таблица: ss_struс_sotr
Таблица: ss_teh
MySQL Error: Table 'ss.ss_struc_sotr' doesn't exist


Добавлено @ 23:05 
Или еще интереснее:
Код

function cc($id="")    {
// проверка
    $dbname = 'ss';
    $result = mysql_list_tables($dbname);
    if (!$result) {
        print "DB Error, could not list tables<BR>";
        print 'MySQL Error: ' . mysql_error();
        exit;
    }
    while ($row = mysql_fetch_row($result)) {
        print "<BR>Таблица: $row[0]";
        $sql = "SELECT * FROM " . $row[0];
     $res = mysql_query($sql);
        print '<BR>MySQL Error: ' . mysql_error();
     print '<BR>' . $res;
    }
    mysql_free_result($result);
    $sql = "SELECT * FROM ss_struc_sotr";
    $result = mysql_query($sql);
    print '<BR>MySQL Error: ' . mysql_error();
    print $result;
}

выводит

Таблица: ss_people
MySQL Error: 
Resource id #21
Таблица: ss_people_pos
MySQL Error: 
Resource id #22
Таблица: ss_struc
MySQL Error: 
Resource id #23
Таблица: ss_struс_sotr
MySQL Error: 
Resource id #24
Таблица: ss_teh
MySQL Error: 
Resource id #25
MySQL Error: Table 'ss.ss_struc_sotr' doesn't exist

Автор: N1k0laj_BY 9.2.2007, 00:38
А если другую таблицу проверить ошибку не выдает?
Код

$sql = "SELECT * FROM ss_struc_sotr";
    $result = mysql_query($sql);
    print '<BR>MySQL Error: ' . mysql_error();

А втором куске кода ничего интересного незаметил, выводит все правильно до места ошибки.

Автор: -=Ustas=- 9.2.2007, 00:58
slang, выход один... либо убивай таблицу и создавай заново, либо через ALTER ручками переименуй её. Я так подозреваю, что там левый символ затесался.

Автор: sergejzr 9.2.2007, 01:06
Сыграем в шаманов? smile

Код

RENAME TABLE ss_struс_sotr TO ss_struc_sotr

Скопируй эту строку в свой код.

Русская "с" у тебя в таблице ss_stru?_sotr

Автор: Mal Hack 9.2.2007, 01:12
А если проверить саму таблицу? Что скажет?

Автор: slang 9.2.2007, 05:38
вот я лупень-то smile 
это ведь надо так лохануться.
вообще буду одними цифрами в именах пользоваться smile
вроде как и внимательно все делал, ан нет - первый раз так - русская буква с.
четыре часа провозился с этой ошибкой, лег спать, а на утро подумал, как я сам не догадался  smile 

Автор: -=Ustas=- 9.2.2007, 08:30
Цитата(slang @  9.2.2007,  05:38 Найти цитируемый пост)
четыре часа провозился с этой ошибкой

Ну ты монстр  smile

Добавлено @ 08:31 
Это что ж можно было четыре часа с ней делать.... ума не приложу  smile 

ЗЫ. Сори за офтоп...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)