Вывод данных MySQL по имени. Как реализовать?

Проблема вот в чем, мне надо вывести гильдию, в которой состоит игрок. Она искаться по имени игрока
if($_GET['user']){
	$result = mysql_query ('SELECT * FROM authme WHERE id='.$_GET['user'].'');
	$myrow = mysql_fetch_array ($result);
	$guild = mysql_query ('SELECT * FROM clan_members WHERE name='.$myrow['username'].'');
	$c_myrow = mysql_fetch_array ($guild);
	$tpl->get_tpl('template/Default/user.tpl');
	$tpl->set_value('USERNAME', $myrow['realname']);
	$tpl->set_value('WORLD', $myrow['world']);
	if($myrow['isLogged'] == 1){
		$tpl->set_value('ONLINE', '<font color="green">В игре!</font>');
	}else{
		$tpl->set_value('ONLINE', '<font color="red">Вне игры!</font>');
	}
	if($myrow['access'] == 1){
		$tpl->set_value('ACCESS', '<font color="red">Администратор</font>');
	}else{
		$tpl->set_value('ACCESS', '<font color="gray">Игрок</font>');
	}
	if($c_myrow['clan']){
		$tpl->set_value('GUILD', $c_myrow['clan']);
	}else{
		$tpl->set_value('GUILD', 'Не состоит в гильдии');
	}
}else{
	echo 'Пользователь не выбран';
}


В таблице гильдий есть запись:
1198b6a907e0475abe2e6ddb54e7965a.png
Вот таблица с пользователями:
e82430bc4f3843dc88f287cf0cd562e4.png
Мне надо вывести гильдию, где name = имени пользователя, т.е. $myrow['username'];
но мне выдает ошибку
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in M:\OpenServer\OpenServer\domains\vergal.ru\index.php on line 10

А если добавить || die(mysql_error())
То ошибка следующая
Unknown column 'nokira' in 'where clause'
Не могу понять, что не так. Прошу вашей помощи
  • Вопрос задан
  • 215 просмотров
Решения вопроса 1
Во первых не забывайте про фильтрацию поступаемых данных из GET, ну и строковые значения в кавычки засуньте, а названия полей в косые.

$guild = mysql_query ('SELECT * FROM clan_members WHERE name='.$myrow['username'].'');


типа так
$guild = mysql_query ("SELECT * FROM clan_members WHERE `name`='".$myrow['username']."'");


Во вторых, ну

//тут надо обрезать $_GET['user'], оставив только [0-9]+

//нужно еще проверить существование ячейки в массиве
if(isset($_GET['user']) && $_GET['user']>=0){
 

  $sql = "SELECT 
  `authme`.`realname`, 
  `authme`.`world`, 
  `authme`.`isLogged`,
  `authme`.`access`,
  `clan_members`.`clan`
  FROM `authme`
  LEFT JOIN `clan_members` ON `clan_members`.`name`=`authme`.`username`
  WHERE `authme`.`id`=".$_GET['user'];

  $result = mysql_query($sql);
  $myrow = mysql_fetch_array ($result);

  unset($result,$sql); //подчищаем лишнее



  $tpl->get_tpl('template/Default/user.tpl');
  $tpl->set_value('USERNAME', $myrow['realname']);
  $tpl->set_value('WORLD', $myrow['world']);
  if($myrow['isLogged'] == 1){
    $tpl->set_value('ONLINE', '<font color="green">В игре!</font>');
  }else{
    $tpl->set_value('ONLINE', '<font color="red">Вне игры!</font>');
  }
  if($myrow['access'] == 1){
    $tpl->set_value('ACCESS', '<font color="red">Администратор</font>');
  }else{
    $tpl->set_value('ACCESS', '<font color="gray">Игрок</font>');
  }
  if($myrow['clan']){
    $tpl->set_value('GUILD', $myrow['clan']);
  }else{
    $tpl->set_value('GUILD', 'Не состоит в гильдии');
  }
}else{
  echo 'Пользователь не выбран';
}


Можно еще конечно спорить про структуру базы, про текстовые ключи, которые лучше на числовые индексы заменить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
mysql_fetch_array() expects parameter 1 to be resource, boolean given
Значит в $result у вас false, то есть предыдущая команда mysql_ завершилась с ошибкой.

А вообще, не используйте функции mysql_, начиная с PHP7.0 они не поддерживаются. Переходите на PDO или mysqli_ с параметризованными запросами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы