2013-05-20 36 views
-1

下面的代碼顯示錯誤:未定義指數:在...PHP變量作爲mysql_fetch_assoc變量的列名

$table="my_table"; 
$col_name="my_col"; 

$sql="SELECT * FROM $table"; 

$result=mysql_query($sql); 

while($row=mysql_fetch_assoc($result)){ 

$db_value = trim(htmlspecialchars_decode($row['$col_name'])); 

} 

$ COL_NAME但是,如果我替換爲下面一個while循環中的最後一行:

$db_value = trim(htmlspecialchars_decode($row['my_col'])); 

沒關係。

如何使用php變量作爲列名而不是直接使用列名?

+0

你爲什麼真的需要那個? 'my_table'有一個'my_col'列 - 不夠嗎? –

+0

'$ row [$ col_name]''怎麼辦? – Trinimon

回答

0

使用double quotes

$db_value = trim(htmlspecialchars_decode($row["$col_name"])); 

或者在這裏你可以簡單地避免引號,

$db_value = trim(htmlspecialchars_decode($row[$col_name])); 

閱讀Strings爲更多的報價。

在該行

$db_value = trim(htmlspecialchars_decode($row['$col_name'])); 

1

我覺得'string'不允許變量代換。換句話說,PHP不會將$col_name解釋爲一個變量。嘗試

$db_value = trim(htmlspecialchars_decode($row["$col_name"])); 

注意''現在""。使用""將字符串變量插值

編輯:

「字符串插值」就是PHP解析字符串,找變量,並取代其字符串表示的變量。只有在使用雙引號時纔會發生。

E.g.

$var = 1234; 
printf("$var\n"); 
printf('$var\n'); 

將輸出

1234 
$var 

因爲串插的第一行。第二行是因爲沒有使用單引號完成字符串插值。

+0

可變插值? –

+0

PHP解析字符串並查找變量,並用字符串表示值替換字符串中的變量:)編輯後。 – Jimbo

1

你不需要用引號'環繞您的​​變量$col_name,只需更改這個

$db_value = trim(htmlspecialchars_decode($row[$col_name])); 
0

基本上你需要刪除「當您使用的是PHP變量是沒有必要的。

行更改爲:

$db_value = trim(htmlspecialchars_decode($row[$col_name])); 

這會爲你工作。