Есть такой запрос к БД:
SELECT * FROM jos_user_profiles WHERE user_id = '124'
Вот такой ответ:
INSERT INTO `jos_user_profiles` (`user_id`, `profile_key`, `profile_value`, `ordering`) VALUES
(124, 'profile.address1', '', 1),
(124, 'profile.address2', '', 2),
(124, 'profile.city', '', 3),
(124, 'profile.country', '223', 5),
(124, 'profile.dis_email', 'klh@kh.ru', 8),
(124, 'profile.dis_name', 'kh', 7),
(124, 'profile.facebook', '', 9),
(124, 'profile.image', '', 15),
(124, 'profile.phone', '', 6),
(124, 'profile.region', '1', 4),
(124, 'profile.shoppingcarturl', '', 14),
(124, 'profile.twitter', '', 10),
(124, 'profile.wappurl', '', 13),
(124, 'profile.website', 'httplawebru', 12),
(124, 'profile.youtube', '', 11);
Данные, помеченные жирным курсивом присвоить переменным.
Вот что я написал:
<?php
$sql = "SELECT * FROM jos_user_profiles WHERE user_id = '".$uid."'";
$result = mysqli_query($link, $sql);
$row = $result->fetch_assoc();
if($row){
$name ='';
$email = '';
foreach($row as $info){
if($info->profile_key == 'profile.dis_name'){
$name = $info->profile_value;
}else if($info->profile_key == 'profile.dis_email'){
$email = $info->profile_value;
}
}
}
?>
Но не работает... Потом тестил, решил вывести массив
<? print_r($row); ?>
Выводится только первая строка (или добавяется в него только первая строка?).[i]
Спустя 27 минут, 7 секунд (9.09.2011 - 07:59) kirik написал(а):
Так?
$sql = "SELECT * FROM jos_user_profiles WHERE user_id = '".$uid."'";
$result = mysqli_query($link, $sql);
$name ='';
$email = '';
while($row = $result->fetch_assoc()) {
if($row['profile_key'] == 'profile.dis_name') {
$name = $row['profile_value'];
} else if($row['profile_key'] == 'profile.dis_email') {
$email = $row['profile_value'];
}
}
$result->free();
Спустя 40 минут, 2 секунды (9.09.2011 - 08:39) Guest написал(а):
kirik, не работает :angry:
Вот листинг всего скрипта, может поможет...
Вот листинг всего скрипта, может поможет...
<?php
#Подключение к серверу MySQL
$link = mysqli_connect(
'localhost', /* Хост, к которому мы подключаемся */
'l', /* Имя пользователя */
'p', /* Используемый пароль */
'bd'); /* База данных для запросов по умолчанию */
if (!$link) {
printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error());
exit;
}
#Извлекаем адрес
$base_path = rtrim(dirname($_SERVER["PHP_SELF"]), '/\\');
#echo 'basepatch='.$base_path.'<br>';
#Отрезаем кусок адреса (тильду)
if($base_path){
$userpath = substr($base_path,1,strlen($base_path));
#echo 'userpath='.$userpath.'<br>';
#Формируем запрос к базе
$sql = "SELECT user_id FROM jos_user_profiles WHERE profile_key = 'profile.website' AND profile_value = '".$userpath."'";
#cho 'sql='.$sql.'<br>';
/* Шлём запрос */
$result = mysqli_query($link, $sql);
#Записываем результат в массив
$row = $result->fetch_array(MYSQLI_NUM);
#printf ("%s (%s)\n", $row[0], $row[1]);
#Записываем в переменную $uid наш user_id
$uid=$row[0];
#echo $uid;
#Формируем следующий запрос
$sql = "SELECT * FROM jos_user_profiles WHERE user_id = '".$uid."'";
#echo $sql;
#Тут всё работает, данные из БД извлекаются
#Вот дальше беда....
#Выполняем его
$result = mysqli_query($link, $sql);
$name ='';
$email = '';
while($row = $result->fetch_assoc()) {
if($row['profile_key'] == 'profile.dis_name') {
$name = $row['profile_value'];
} else if($row['profile_key'] == 'profile.dis_email') {
$email = $row['profile_value'];
}
}
$result->free();
}
echo $name;
?>
Спустя 19 минут, 5 секунд (9.09.2011 - 08:58) inpost написал(а):
внутри while напиши:
echo '<pre>'.print_r($row,true).'</pre>';