2012-09-10 115 views
0

嗨,我想從列中的特定表中獲取列的MySQL,然後生成基於列的表單,但我不斷收到錯誤和頁面只是空白。php substr()期望參數1是字符串,給出的數組

mysql_select_db($DB_Name) or die(mysql_error()); 
$query=mysql_query("SHOW COLUMNS FROM mytable") or die (mysql_error()); 
$j=0; 

while($row=mysql_fetch_assoc($query)){ 
    if(substr($row,0,2)=="S_"){ 
     echo substr($row,2);?>:<input type="text" name="<?php echo $row;?>" maxlength="<?php echo getlength($j, "mytable");?>" /><?php ?><!--textbox code here --><?php 
    } 
    $j++; 
} 

getlength();是一個方法,我寫,使其更容易得到length of a field爲列。它工作正確。

謝謝

我想我沒有提及。由於該網站是動態的,該列的名稱並不知道。重點是從特定的表中獲取列名的列表並按順序顯示它。

+0

使用'substr'您可以限制字符串值的計數,而不是數組... –

+0

誰一直在降低我的聲譽?我首先做了我的研究,並試圖澄清。 –

+0

對不起。不知道降低聲譽率 –

回答

1

mysql_fetch_assoc返回一個關聯數組。在這種情況下,你很可能是得到一個數組什麼樣的看起來是這樣的:

[FIELD] => "Name of the field", 
[Type] => "varchar(32)", 
[Null] => YES, 
[Key] => PRI, 
[Default] => '', 
[Extra] => '' 

所以,如果你想檢查S_字段名,那麼你需要你的SUBSTR行更改爲

substr($row['FIELD'], 0, 2) 
+0

當我嘗試這個我得到的錯誤未定義索引。 –

+0

好的這個作品。它的「字段」,而不是「字段」 –

2

當您致電substr()時,您當前正在傳遞$row,這是一個數組。你需要以此來回報這樣一個特別的元素來指定在$row指數:

$row['name'] 
0

更換

if(substr($row,0,2)=="S_"){ 
    echo substr($row,2);?> 

if(substr($row['FIELD'],0,2)=="S_"){ 
    echo substr($row['FIELD'],2);?> 
+0

我得到未定義的索引而不是 –

1

您需要確定要跟蹤的列。這裏是正確的腳本如下:

<?php 
    if(substr($row['some_column'],0,2)=="S_"){ 
     echo substr($row['some_column'],2); 

    } 
?> 

希望這可以幫助你。

+0

不可能,列有時會被添加/刪除/更改。生成的表格是動態的,意味着表格中的列被用作生成表單和驗證用戶輸入的基礎。 –

相關問題