【问题标题】:fetch field not working获取字段不起作用
【发布时间】:2012-07-02 20:30:39
【问题描述】:

这个脚本似乎有问题。每当我将 $i 的值更改为喜欢 2 或其他内容时,它都会输出 A 字段而不是所有字段。我不确定出了什么问题。

另外有可能做这样的事情吗?基本上结果查询中有更多字段,但我只想输出结果查询中列出的我希望用户能够编辑的字段的值(显示在resultInput中)

<?php
require('dbc.php');
mysql_select_db($db);
$result = mysql_query("SELECT * FROM about WHERE id=1");
$resultInput = array('page_header', 'sub_header', 'content', 'content_short');


if (mysql_num_rows($result) > 0) {
//loop creates inputs
//make $resultInput object to array.
$i=0;
while ($row = mysql_fetch_assoc($result)) {
    $meta = mysql_fetch_field($result, $i);
    if(in_array($meta->name, $resultInput )){
    echo '<div class="wrapper"><label>' . ucfirst(str_replace('_', ' ',$meta->name)) . 
    '<br><input name="' . $meta->name . 
    '" type="text" class="input" value="'.$row[$meta->name].'"><br></label></div>';
    }
    $i++;
 }
}
?>

【问题讨论】:

  • 您的输出可能会为每一行返回 1 个字段,然后遍历,因此首先显示字段 0,第二行显示字段 1,第三行显示字段 2...看看您现在是否可以发现错误
  • 哦,我明白了。但是如何解决这个问题?我希望显示这些字段的所有字段和值
  • 那你还没有想过事情是如何运作的..
  • 我和一个朋友很遗憾我们没有看到它
  • 鉴于我对您的代码所做的解释,这应该会引导您找到答案 - 我在下面发布了代码。

标签: php mysql arrays object


【解决方案1】:

虽然这不是我会这样做的方式.. 我已经获取了您的代码并制作了它,所以它应该可以工作..

if (mysql_num_rows($result) > 0) { 
//loop creates inputs 
//make $resultInput object to array. 

    while ($row = mysql_fetch_assoc($result)) 
    { 
        $i=0; 
        while ( $i<   mysql_num_fields($result)) 
        {
            $meta = mysql_fetch_field($result, $i); 
            if(in_array($meta->name, $resultInput ))
            { 
              echo '<div class="wrapper"><label>' . ucfirst(str_replace('_', ' ',$meta->name)) .  
             '<br><input name="' . $meta->name .  
             '" type="text" class="input" value="'.$row[$meta->name].'"><br></label></div>'; 
            } 
            $i++; 
        } 
    } 
    ?> 

仅供参考

这就是我的做法,虽然看着它,我对回声不满意..但是..

    while ($row = mysql_fetch_assoc($result)) 
    { 
        foreach ($row as $fieldname => $value)
        {
            if (in_array($fieldname, $resultInput )) Display_data($fieldname,$value);
        } 
    } 

function Display_data($fieldname,$value)
{
              echo '<div class="wrapper"><label>' . ucfirst(str_replace('_', ' ',$fieldname)) .  
             '<br><input name="' . $fieldname .  
             '" type="text" class="input" value="'.$value.'"><br></label></div>'; 
} 

【讨论】:

  • 我知道,但如果我这样做,他可能会看到逻辑出错的地方......而不是我会做什么......我的意思不是完美的代码 - 所以我有点恼火否决票,当我试图显示逻辑错误而不是编码丑陋时。
  • 是的,我现在看到了(不是我投反对票的人)。这是有道理的。代码有什么不好呢?授予有几个while循环
  • 感谢您尝试教新手,但由于此答案将作为一般参考,因此人们将复制并粘贴它,因为它有效。所以我宁愿你写一个这是你的错误,这是正确的方法答案...
  • 问题是您通常可以按照自己的方式行事,而人们不会看到他们有什么问题。我会做一个“这里有更好的方法”..
  • 关于新代码:这实际上是我以前所拥有的,但并没有在 foreeach 中添加 inarray (我真的很愚蠢)......当然更好的代码哈哈同时( $row = mysql_fetch_assoc ($result) ) { foreach($row as $column => $value){ echo "Row: $column - $value
    "; } }
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 2022-06-28
  • 1970-01-01
  • 2023-03-03
  • 2015-08-24
  • 2013-05-11
  • 2017-11-19
  • 2015-03-15
相关资源
最近更新 更多