繁体   English   中英

在PHP MySQL中的for和while循环

[英]For and While loop in php mysql

我有以下代码。 有什么办法可以合并和简化它?

json.html文件中的输出应如下所示: ["abc","def","ghi"]

    <?php
    // Make a MySQL Connection
    mysql_connect("localhost", "root", "admin") or die(mysql_error());
    mysql_select_db("test1") or die(mysql_error());

    // Get all the data from the "example" table
    $result = mysql_query("SELECT * FROM test_auto_complete") or die(mysql_error());  

    $menu = array();

    while($row = mysql_fetch_assoc($result))
    {
    $menu[] = array("id" => $row['username'],);
    } 

    foreach($menu as $key=>$value)
    {
      $menu[$key] = $value['id'];
    }


    $my_json_content = json_encode($menu);

    $file = 'json.html';
    $current = file_get_contents($file);
    file_put_contents($file, $my_json_content);

    ?>

我知道代码看起来很糟糕,但是即使如此,有人可以帮助我吗?

谢谢
哈安

如果您想将内容放入文件中,而不仅仅是使用file_put_contents

$my_json_content = json_encode($menu);
$file = 'json.html';
file_put_contents($file, $my_json_content);

并使用此while循环而无需foreach

while($row = mysql_fetch_assoc($result))
{
$menu[] = $row['username'];
} 

我什至不给您mysql_ *解决方案,因为它们被弃用了,请看PDO中的解决方案

<?php 
$dsn = 'mysql:dbname=test1;host=127.0.0.1';
$user = 'root';
$password = 'admin';

try{
    $dbh = new PDO($dsn, $user, $password);
    $menu = array();
    foreach ($conn->query("SELECT * FROM test_auto_complete") as $row)
             $menu[] = $row['username'];

    file_put_contents('json.html', json_encode($menu));

}catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

提示:

  1. Mysql_ *函数已被废弃,它们不支持MySQL的许多功能
  2. 在您的情况下,Foreach毫无意义。
  3. 您的代码中的File_get_contents()对我没有任何意义,您需要什么文件内容?
  4. 变量用于将要更改的数据。 例如,在您的情况下,您可以为json.html使用变量,该变量似乎是常量,如果是,则使用常量字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM