Собственно проблема в следующем, есть база, к примеру TEST? в ней существуют таблицы, со всех таблиц данные получаются, кроме одной, вот пример моего запроса:
CODE
<?php
mysql_connect("localhost","root","root") or die('Не удалось подключится к MySQL серверу. Проверьте настройки.');
mysql_select_db("TEST") or dir('Не удалось выбрать базу данных. Проверьте настойки.');
$n=1;
$query = "SELECT * FROM сhar WHERE online = 1";
$data = mysql_query($query) or die ('Не удалось получить данные из базы.');
$i=1;
while ($row=mysql_fetch_array($data))
{
$name=$row['name'];
$level=$row['base_level'];
echo "<tr><td><b><center>$n . $name . $level </center></b></td></tr>";
$n++;
}
?>
теперь даю саму базу, вернее с чего я ее ставил, возможно в самой базе есть чтото, чего я не допонимаю, так как в програмировании я не силен пока:
DROP TABLE IF EXISTS `char`;
CREATE TABLE `char` (
`char_id` int(11) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned NOT NULL default '0',
`char_num` tinyint(1) NOT NULL default '0',
`name` varchar(30) NOT NULL default '',
`class` smallint(6) unsigned NOT NULL default '0',
`base_level` smallint(6) unsigned NOT NULL default '1',
`job_level` smallint(6) unsigned NOT NULL default '1',
`base_exp` bigint(20) unsigned NOT NULL default '0',
`job_exp` bigint(20) unsigned NOT NULL default '0',
`zeny` int(11) unsigned NOT NULL default '0',
`str` smallint(4) unsigned NOT NULL default '0',
`agi` smallint(4) unsigned NOT NULL default '0',
`vit` smallint(4) unsigned NOT NULL default '0',
`int` smallint(4) unsigned NOT NULL default '0',
`dex` smallint(4) unsigned NOT NULL default '0',
`luk` smallint(4) unsigned NOT NULL default '0',
`max_hp` mediumint(8) unsigned NOT NULL default '0',
`hp` mediumint(8) unsigned NOT NULL default '0',
`max_sp` mediumint(6) unsigned NOT NULL default '0',
`sp` mediumint(6) unsigned NOT NULL default '0',
`status_point` smallint(4) unsigned NOT NULL default '0',
`skill_point` smallint(4) unsigned NOT NULL default '0',
`option` int(11) NOT NULL default '0',
`karma` tinyint(3) NOT NULL default '0',
`manner` tinyint(3) NOT NULL default '0',
`party_id` int(11) unsigned NOT NULL default '0',
`guild_id` int(11) unsigned NOT NULL default '0',
`pet_id` int(11) unsigned NOT NULL default '0',
`homun_id` int(11) unsigned NOT NULL default '0',
`hair` tinyint(4) unsigned NOT NULL default '0',
`hair_color` smallint(5) unsigned NOT NULL default '0',
`clothes_color` smallint(5) unsigned NOT NULL default '0',
`weapon` smallint(6) unsigned NOT NULL default '1',
`shield` smallint(6) unsigned NOT NULL default '0',
`head_top` smallint(6) unsigned NOT NULL default '0',
`head_mid` smallint(6) unsigned NOT NULL default '0',
`head_bottom` smallint(6) unsigned NOT NULL default '0',
`last_map` varchar(20) NOT NULL default 'prontera.gat',
`last_x` smallint(4) unsigned NOT NULL default '53',
`last_y` smallint(4) unsigned NOT NULL default '111',
`save_map` varchar(20) NOT NULL default 'prontera.gat',
`save_x` smallint(4) unsigned NOT NULL default '53',
`save_y` smallint(4) unsigned NOT NULL default '111',
`partner_id` int(11) unsigned NOT NULL default '0',
`online` tinyint(2) NOT NULL default '0',
`father` int(11) unsigned NOT NULL default '0',
`mother` int(11) unsigned NOT NULL default '0',
`child` int(11) unsigned NOT NULL default '0',
`fame` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`char_id`),
KEY `account_id` (`account_id`),
KEY `party_id` (`party_id`),
KEY `guild_id` (`guild_id`),
KEY `name` (`name`),
KEY `online` (`online`)
) TYPE=MyISAM AUTO_INCREMENT=150000;
Огромная просьба, помогите решить данный вопрос, очень нужно, не стока для решения задачи непосредственно, сколько для своих познаний...
нет, я просто дал код своего запроса, он при выполнении просто выдает $data = mysql_query($query) or die ('Не удалось получить данные из базы.'); данное выражение, следовательно он я как понимаю вообще не видит этой таблицы, хотя есть одна пометка, когда я считаю колличество онлайна, вот код:
$sql = mysql_query("SELECT count(*) FROM `char` WHERE online = 1");
$charonline = mysql_result($sql, 0, 0);
он выводит число реального онлайна, но как только я хочу выделить к примеру стоблец "name", он пишет вышеуказанное выражение...
вот собственно я и не могу понять почему так получается, это может быть связано как нибудь с параметром таблицы:
....
) TYPE=MyISAM AUTO_INCREMENT=150000;.....?
так как этот параметр применяется только для данной таблицы, в остальных прописано просто ") TYPE=MyISAM;" если это так, то подскажите как сделать, чтоб запрос проходил нормально?
Chepa Почему ты не пишешь вот так:
$query = "SELECT * FROM `сhar` WHERE online = 1";
Просто char это встроенный тип, может это ему и не нравиться?
А AUTO_INCREMENT=150000 - это значит, что значения в столбце char_id будут начинаться с числа 150000 (а не 1, как по умолчанию), ну и дальше с каждой записью это число будет увеличиваться.
пишу, я и так пробовал и так (а на счет того, что это всего лишь стартовое значение я тоже думал, но думал вдруг из-за этого), ничего не изменилось, перекопал кучу инфы, но данного вопроса нигде не нашол, вот и решит у вас спросить, есть еще подозрения, что возможен конфликт команды с версией MySQL и PHP, мускул стоит на линуксе и имеет версию 4.1.10а ну а ПХП в свою очередь носит версию 5.2.1, может в данном имеется загвоздка, но хочу повториться, что с других таблиц я получаю данные без каких либо проблем, с именами и тд... могу привети пример, вот код:
<?php
mysql_connect("localhost","root","root") or die('Не удалось подключится к MySQL серверу. Проверьте настройки.');
mysql_select_db("TEST") or dir('Не удалось выбрать базу данных. Проверьте настойки.');
$query = "SELECT * FROM guild WHERE guild_id >= 0 ORDER BY guild_lv DESC";
$data = mysql_query ($query) or die('Не удалось получить данные из базы.');
$result = mysql_query ("SELECT count(*) FROM guild");
print '<table>
<center><caption><br><b>..:: Топ кланов ::..</b><br><br><hr></caption></center>
<thead>
<tr style="vertical-align: bottom;">
<th>Имя клана</th>
<th>Лидер</th>
<th class="sortedColumn">Уровень</th>
<th>Мемберы</th>
<th>Ср. уровень</th>
<th>Эскпа</th>
</tr>
</thead>
<tfoot>
<tr><td colspan="7" style="text-align: right;">'.ВСЕГО.': '.mysql_result($result, 0, 0).'</td></tr>
</tfoot>
<tbody id="TblBdy">
';
DROP TABLE IF EXISTS `guild`;
CREATE TABLE `guild` (
`guild_id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(24) NOT NULL default '',
`char_id` int(11) unsigned NOT NULL default '0',
`master` varchar(24) NOT NULL default '',
`guild_lv` tinyint(6) unsigned NOT NULL default '0',
`connect_member` tinyint(6) unsigned NOT NULL default '0',
`max_member` tinyint(6) unsigned NOT NULL default '0',
`average_lv` smallint(6) unsigned NOT NULL default '1',
`exp` int(11) unsigned NOT NULL default '0',
`next_exp` int(11) unsigned NOT NULL default '0',
`skill_point` tinyint(11) unsigned NOT NULL default '0',
`mes1` varchar(60) NOT NULL default '',
`mes2` varchar(120) NOT NULL default '',
`emblem_len` int(11) unsigned NOT NULL default '0',
`emblem_id` int(11) unsigned NOT NULL default '0',
`emblem_data` blob,
PRIMARY KEY (`guild_id`,`char_id`),
UNIQUE KEY `guild_id` (`guild_id`),
KEY `char_id` (`char_id`)
) TYPE=MyISAM;
да, на счет одинарных ковычек, без них действительно функция $query = "SELECT count(*) FROM `сhar` WHERE online = 1"; не расчитывается, а с ковычками все путем, но других данных из таблицы я не могу получить, вот собсно и проблема в этом...
В таком случае давай смотреть, что за ошибка возникает, пиши вот так:
$data = mysql_query ($query) or die('Не удалось получить данные из базы. Ошибка: ' . mysql_error());
вот что он выдал:
Не удалось получить данные из базы. Ошибка: 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 ''char' WHERE online = 1' at line 1 судя из этого, я правильно предположил, что глюк в команде ПХП под данную версию мускула, так?
Chepa Он пишет, что у тебя неправильный синтаксис команды около 'char'. Все же ему не нравиться такое название таблицы. А версия php и версия базы данных не связаны.
Попробуй char в квадратные скобки заключить - [char], может так получиться... около этого короче тебе копать нужно.
неа, не помогло... ( Добавлено спустя 1 час, 48 минут, 14 секунд нашол выход, вот смотрите код, правда надо будет немного подредактить и норм Добавлено спустя 55 секунд $data = mysql_query ("SELECT name, class, base_level, job_level FROM `char` WHERE online = 1") or die('Не удалось получить данные из базы. Ошибка: ' . mysql_error());
вот так сработало...
всем спасибо огромное
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения