【问题标题】:How to store sql column name in form value如何将sql列名存储在表单值中
【发布时间】:2015-06-08 03:59:33
【问题描述】:

我是 php 和 MySQL 的新手(通过“Head First:PHP & MySQL”工作)。我正在尝试从数组中获取 MySQL 表列名并将其存储在表单输入字段的“值”中。出于某种原因,我最终只得到一个空白页。当我简单地在“值”中输入一些文本时,页面结果很好。

我检查了每一行代码并将其缩小到输入值。数据库连接有效,我可以在“while”循环中回显列名,但不能在“值”中回显。

代码如下:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?> ">
    <?php 
        $dbc= mysqli_connect('host', 'user', 'pass', 'elvis_store')
            or die ('Error connecting to the database');

        $query= "SELECT * FROM elvis_emails";
        $result= mysqli_query($dbc, $query) 
            or die ('Error querying database');

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

            echo '<input type="checkbox" value="'$row['Id']'" name="todelete[]"    />';
            echo $row['Id'];
            echo ' ' . $row['first_name'];
            echo ' ' . $row['last_name'];   
            echo ' ' . $row['email'];
            echo '<br />';
        }

        mysqli_close($dbc);


    ?>
    <input type="submit" name="submit" value="Remove" />
</form>

谢谢!

【问题讨论】:

  • 先关了,打开报错,不要乱猜,死机白屏。如果是错字,您应该修复缺少的串联value="'$row['Id']'"
  • 谢谢!我尝试启用错误报告,但没有报告错误。我会做更多的研究来弄清楚如何启用错误报告。

标签: php mysql arrays forms


【解决方案1】:

而不是,

echo '<input type="checkbox" value="'$row['Id']'" name="todelete[]"    />';

这样试试

echo '<input type="checkbox" value="'.$row["Id"].'" name="todelete[]"    />';

【讨论】:

  • 谢谢!!这解决了我的问题。谢谢你抓住这个!
【解决方案2】:

真正破坏代码的是缺少正确的连接

最好避免使用 PHP echo 语句打印 HTML 元素。相反,在这种情况下最好的方法是:

<?php while ($row = mysqli_fetch_array($result)){ ?>

<input type="checkbox" value="<?=$row['Id']?>" name="todelete[]" />

<?php
 ...
}

mysqli_close($dbc);

?>

如果无论如何您确实需要打印一段依赖于 HTML 标记和 PHP 变量的代码,您可以使用 HEREDOC 而不是使用 echo 来打印多行代码。

另外,请确保将 row 数组的键命名为 与您的查询返回值相同。

【讨论】:

  • Guilherme,感谢您的精彩提示。用 echo 语句打印 HTML 元素感觉有点奇怪;感谢您阐明一种更好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2010-10-20
相关资源
最近更新 更多