首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -使用MySQL数据库中的记录作为值创建复选框

问PHP -使用MySQL数据库中的记录作为值创建复选框
EN

Stack Overflow用户
提问于 2016-04-09 13:13:54
回答 3查看 166关注 0票数 0

我是php编程的新手,我不知道哪里出错了,因为我的php代码不能执行。

正如标题所说,我正在尝试在我的站点中创建复选框,但是,这些值将来自mysql数据库。

我在MySQL数据库中有一个名为“campus”的表,它有两列,分别名为id和room。

数据库http://i.imgur.com/uLP6niJ.png

电流输出http://i.imgur.com/cSOYPme.png

下面是我的代码:

代码语言:javascript
复制
<?PHP

$hostname = "localhost";
$username = "root";
$password = "root";
$databaseName = "my computer";

$connect = mysqli_connect($hostname, $username, $password, $databaseName);


// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }



?>


<html>  
<body>


<form name="aform">


Choose a room:


<?php
  $s = '';
  $j = 0;
  if ($q = $connect->query("SELECT * FROM `campus`")) {
    while ($line = $q->fetch_assoc()) {
      $s.= '<input type="checkbox" name="car'.$j.'" value="'.$line['room'].'">';
    }
  }
  echo $s;
?>

</form>


</body>
</html>
EN

回答 3

Stack Overflow用户

发布于 2016-04-09 13:19:00

您没有正确地关闭while循环。按如下所示关闭while循环。

代码语言:javascript
复制
<?php

    $sql = "SELECT room FROM campus";
    $result = mysqli_query($sql);

    while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) {

    ?>

    <input type="checkbox" name="car" value="<?php echo $line['room']?>" />

   <?php
    }
    ?>
票数 1
EN

Stack Overflow用户

发布于 2016-04-09 14:11:21

试试这个

代码语言:javascript
复制
<?php

$sql = "SELECT room FROM campus";
$result = mysqli_query($sql);

$campusArray = mysqli_fetch_array($result, MYSQLI_ASSOC);
foreach ($campusArray as $campus): ?>
    <input type="checkbox" name="car" value="<?php echo $campus['room'];?>" />
<?php endforeach; ?>

我希望你能用这个解决你的问题。

替代语法对于提高易读性是非常好的(对于PHP和HTML!)在你混合使用它们的情况下。

http://ca3.php.net/manual/en/control-structures.alternative-syntax.php

票数 0
EN

Stack Overflow用户

发布于 2016-04-09 14:17:42

欢迎使用PHP!

一个错误是您缺少任何php函数(如echo)后所需的分号

代码语言:javascript
复制
<?php echo $line['room']; ?>

在结束部分有缺失的PHP标记}

第三个错误是您没有告诉mysqli在其上运行查询应该具有哪个连接:

代码语言:javascript
复制
mysqli_query($dbCon, $sql);

除此之外,我个人更喜欢使用PDO连接,但mysqli仍然很好,但有一些格式化技巧可以帮助防止出现问题。

例如,使用反勾号(`)总是一个好主意。

所以:

代码语言:javascript
复制
$sql = "SELECT `room` FROM `campus`";

但是,要实现这一点,最好使用*查询。它从列中选择所有内容,因此:

代码语言:javascript
复制
$sql = "SELECT * FROM `campus`";

原因在于您如何获取数据,您告诉PHP使用结果创建一个数组。但是您只为它的每一行提供了一段数据。因此,如果你给它所有的数据,它只会使它更容易使用。

下面是完整的代码:

代码语言:javascript
复制
<?php $dbCon = mysqli_connect("localhost", "root", "root", "my computer");
// Check connection
if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}?>    
<html>  
    <body>
        <form name="aform">
            Choose a room:
            <?php
            $sql = "SELECT * FROM `campus`";
            $result = mysqli_query($dbCon, $sql);

            while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) { ?>
                <input type="checkbox" name="car" value="<?php echo $line['room']; ?>"
            <?php } ?>
        </form>
    </body>
</html>

另外,如果你感兴趣,这里是如何在PDO中完成的:

代码语言:javascript
复制
<?php
try{
    $con = new \PDO("mysql:host=" . 'localhost' . ";dbname=" . 'My Computer', 'root', 'root');
}catch(PDOException $e){
    echo "Connection Failed";
    die();
} ?>
<html>  
    <body>
        <form name="aform">
            Choose a room:
            <?php
            $result = $con->prepare("SELECT * FROM `campus`")
            $result->execute();
            while ($row = $result->fetch()) { ?>
                <input type="checkbox" name="car" value="<?php echo $row['room']; ?>"
           <?php } ?>
        </form>
    </body>
</html>

还是不能工作吗?请随时发表评论,我会看看是怎么回事:)

谢谢,P110

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36513009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档