嗨,我正试图从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);?>