MySQL запрос возвращает значение в первом столбце для всех остальных столбцов

0

Привет, я сделал запрос к таблице ниже, и когда я попытался получить значение в каждом столбце, он возвращает одно и то же значение из первого столбца для всех остальных столбцов. Разработать В моей таблице базы данных у меня есть следующее:

owner_id = 21
pet_id = 1
name = fluffy
color = green
type = dog
sub_type = boxer
location = LA

однако всякий раз, когда я пытаюсь получить доступ к одному столбцу, скажем, столбец имен, он возвращает 21, который является значение в столбце owner_id, соответствующем этому pet_id. Я не уверен, почему это происходит.

$query = sprintf("SELECT * FROM `petAttributes` where pet_id ='%d'",$p_id);
 $result = performQuery($query);

 $owner_id = stripslashes(mysql_result($result,"owner_id"));
 $pet_id = stripslashes(mysql_result($result,"pet_id"));
 $name = stripslashes(mysql_result($result,"name"));
 $color = stripslashes(mysql_result($result,"color"));
 $type = stripslashes(mysql_result($result,"type"));
 $sub_type = stripslashes(mysql_result($result,"sub_type"));
 $loc = stripslashes(mysql_result($result,"location"));

Информация о моей среде
Версия PHP 5.2.14
MYSQL версии 5.0.67

Теги:

3 ответа

1
Лучший ответ

Я считаю, что если вы используете mysql_result, вам также нужно указать номер индекса строки (строка 0 в вашем случае?), прежде чем указывать столбец.

$name = stripslashes(mysql_result($result, 0, "name"));
0

ссылаясь на http://php.net/manual/en/function.mysql-result.php mysql_result имеет следующие параметры: mysql_result($result,$rownumber,$fieldname or $fieldnumber)

это должно работать:

$query = sprintf("SELECT * FROM petAttributes where pet_id ='%d'",$p_id);
$result = performQuery($query);

$owner_id = stripslashes(mysql_result($result,0,"owner_id"));
$pet_id = stripslashes(mysql_result($result,0,"pet_id"));
$name = stripslashes(mysql_result($result,0,"name"));
$color = stripslashes(mysql_result($result,0,"color"));
$type = stripslashes(mysql_result($result,0,"type"));
$sub_type = stripslashes(mysql_result($result,0,"sub_type"));
$loc = stripslashes(mysql_result($result,0,"location"));

BTW mysql_result становится очень неэффективным, если вы берете несколько строк. Затем вы должны использовать mysql_fetch_row, mysql_fetch_array или mysql_fetch_assoc

0

Также вы можете:

только для первой строки

$query = sprintf("SELECT * FROM petAttributes where pet_id ='%d'",$p_id);
$result = performQuery($query);
$row = mysql_fetch_array($result);

extract($row);

или все возвращенные строки;

$query = sprintf("SELECT * FROM petAttributes where pet_id ='%d'",$p_id);
$result = performQuery($query);
while($row = mysql_fetch_array($result))
{
  foreach ($row as $value)  echo $value."<br>";
}
  • 0
    Извините, я терпеть не могу этот ужасный код. Отредактировал это
  • 0
    Извините и спасибо.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню