2013-05-10 2 views
0

У меня есть следующий код. Есть ли способ объединить и упростить его?For и 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); 

    ?> 

Я знаю, что код выглядит плохо, но даже в этом случае кто-нибудь может мне помочь?

Благодаря
Haan

+0

не использовать mysql_ * изменить их на PDO или mysqli, потому что mysql_ * деградирует. Кажется, вы не используете переменную $ current, поэтому почему вы получаете содержимое файла? Что вы хотите использовать foreach, потому что я не получаю его – Robert

ответ

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']; 
} 
+1

, он использует его, но он также использует file_get_contents без причины. – Robert

+1

@RobertPodwika Может быть, OP нуждается в отдыхе .. :) –

+0

Возможно :) вы правы – Robert

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_ * функции depracated и они не поддерживают много особенностей MySQL
  2. Foreach в вашем случае было бессмысленно.
  3. File_get_contents() в вашем коде не имеет для меня никакого смысла, для чего нужен контент файла?
  4. Переменные используются для данных, которые будут изменены. Например, в вашем случае вы используете переменную для json.html, которая кажется постоянной, если да, то используйте константу string.
+0

Неустранимая ошибка: вызов функции-функции члена() для не-объекта в C: \ xampp \ htdocs \ test \ jquery- auto-complete \ mycheck.php в строке 9 Получение этого сообщения об ошибке, когда я использовал ваш код :( – hjaffer2001