2012-11-22 3 views
1

Я пытаюсь выяснить, как это сделать:

$var_name = 'name'; 

$results = mysql_query ("SELECT * FROM users WHERE id = 1") or die (mysql_error()); 
$row = mysql_fetch_assoc ($results); 

$username = $row[$$var_name]; 

Как можно использовать переменную $ в этот результат MySQL?

Заранее спасибо :-)

+4

У меня нет вашей проблемы. – Sirko

+0

Если $ var_name равно имени coloumn, это совершенно правильно. Однако я не уверен, что вы хотите сделать. – looper

+0

Ваш код выглядит хорошо. Что не работает? – davidethell

ответ

0

То, что я взял из этого было то, что вы пытаетесь присвоить результат запроса к переменной для дальнейшего использования? Что-то вроде имени пользователя, пароля, адреса, города, штата, zip и т. Д. Чтобы сделать это, вы сделаете что-то вроде следующего.

$sql = SELECT * FROM users WHERE id = 1 
$result = mysql_query($sql) or die(mysql_error()) 

//now assign the variables 
for($row = 0; $row = mysql_fetch_array($result, MYSQLI_ASSOC); $row++) 
{ 
    //assign variables 
    $username = $row['username']; 
    $password = $row['password']; 
    $city = $row['city']; 
    $state = $row['state']; 
    $zip = $row['zip']; 

    //etc... 
} 

Имейте в виду, что это петля, хотя, так что если вы в конечном итоге с двумя результатами вашего запроса, то переменные будут отличаться при каждом цикле. Этот тип настройки хорош для отображения нескольких строк данных. Существуют другие методы, которые вы можете использовать для установки переменных, которые вам нужно использовать.

0

Я думаю, что вы можете использовать что-то вроде

${$var_name} 

Но это не лучший способ ... Если $ var_name приходят из запроса вы можете производить критические утечки!

В вашем примере это должно быть:

$var_name = 'name'; 
$username = $row[${$var_name}]; // same as : $username = $row[$name]; 

еще раз: НЕ рекомендуется!

Смежные вопросы