php-substr()要求参数1为字符串,给定数组


php substr() expects parameter 1 to be string, array given

嗨,我正试图从mysql中的一个特定表中获取列列表,然后根据列生成一个表单,但我一直收到一个错误,页面只是空白。

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。它工作准确。

感谢

我想我没有提到。由于站点是动态的,所以列的名称是未知的。这样做的目的是从特定的表中获取列名列表,并以有序的方式显示它。

mysql_fetch_assoc返回一个关联数组。在这种情况下,你很可能会得到一个数组,它看起来像这样:

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

因此,如果你想检查S_的字段名称,那么你需要将子字符串行更改为

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

当您调用substr()时,您当前正在传递$row,这是一个数组。您需要在$row中指定一个索引,以便返回如下特定元素:

 $row['name']

您需要确定要跟踪的列。下面是正确的脚本:

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

希望这对你有帮助。

更换

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

带有

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