【问题标题】:For and While loop in php mysqlphp mysql中的for和while循环
【发布时间】:2013-05-10 10:18:31
【问题描述】:

我有以下代码。有没有什么方法可以合并简化?

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

    ?>

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

谢谢

【问题讨论】:

  • 不要使用 mysql_* 将它们更改为 PDO 或 mysqli,因为 mysql_* 已被弃用。看来您不使用 $current 变量,为什么要获取文件的内容?你想用 foreach 做什么,我不明白

标签: php loops for-loop phpmyadmin while-loop


【解决方案1】:

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

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

并在没有foreach 的情况下使用这个while 循环

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

【讨论】:

  • 他使用它,但他也无缘无故地使用 file_get_contents。
  • @RobertPodwika 可能是 OP 需要休息 ..:)
【解决方案2】:

我什至不会为您提供 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 使用变量,这似乎是常量,如果是,则使用常量字符串。

【讨论】:

  • 致命错误:在第 9 行的 C:\xampp\htdocs\test\jquery-auto-complete\mycheck.php 中对非对象调用成员函数 query() 收到此错误消息当我使用你的代码时:(
猜你喜欢
  • 2011-02-11
  • 2019-02-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
相关资源
最近更新 更多