0

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

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);

    ?>

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

谢谢

4

2 回答 2

1

如果您想将内容放入文件中,而不仅仅是使用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'];
} 
于 2013-05-10T10:21:35.030 回答
0

我什至不会为您提供 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的变量,这似乎是恒定的,如果是这样,则使用常量字符串。
于 2013-05-10T10:30:58.670 回答