2016-07-27 14 views
2

私はプロジェクトに取り掛かっています。ログインしたユーザーはホームページにメモを投稿できるはずです。特定のユーザーのメモは新しいメモの上に印刷する必要があります形。 私はmysqli_queryが私が持っている6つのエントリすべてを認識するが、mysqli_fetch_assocは6のうち最初のノートだけを表示するという関数を書いた。ここに私のコードは次のとおりです。mysqli_fetch_assocは配列の最初の要素のみを返す

$arr = $result->fetch_all(MYSQLI_ASSOC); 

またはwhileループを使用します:

<?php  
 
    function find_notes_by_id($user_id) { 
 
\t global $connection; 
 
\t 
 
\t $safe_user_id = mysqli_real_escape_string($connection, $user_id); 
 
\t 
 
\t $query = 'SELECT content '; 
 
\t $query .= 'FROM notes '; 
 
\t $query .= 'WHERE user_id = '.$safe_user_id; 
 
\t $result = mysqli_query($connection, $query); 
 
    
 
\t //mysqli_result Object ([current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 6 [type] => 0) 
 

 
\t confirm_query($result); 
 

 
\t $row = mysqli_fetch_assoc($result); 
 
\t //Array ([content] => First!) = it only shows the very first element 
 
\t return $row; 
 
} 
 
?> 
 

 
<?php 
 
$notes_set = find_notes_by_id($userRow['id']); 
 
    foreach($notes_set as $note){ 
 
\t echo $note; 
 
\t echo "<br />"; 
 
    } 
 
?>

enter image description here

+1

あなたは配列を作成してからそれを返してすべてのレコードを取得する必要があります –

+0

'$ row = array();'のような意味ですか?ちょうど試みましたが、それは同じように動作します。 – sklrboy

答えて

2

1.Youはarrayにごresult-set object

2.Savewhile()を介してすべてのあなたのデータを反復処理し、その後arrayは、以下のようなすべてのレコード

を取得することを返す必要があります: -

<?php  
    function find_notes_by_id($user_id) { 
    global $connection; 

    $safe_user_id = mysqli_real_escape_string($connection, $user_id); 

    $query = "SELECT `content` FROM `notes` WHERE `user_id` = $safe_user_id"; 
    $result = mysqli_query($connection, $query); 

    confirm_query($result); 

    $final_data = array(); // create an array 
    while($row = mysqli_fetch_assoc($result)){ // iterate over the result-set object to get all data 
     $final_data[] = $row; //assign value to the array 
    } 
    return $final_data; // return array 
    } 
?> 

: - array

<?php 
$notes_set = find_notes_by_id($userRow['id']); 

print_r($notes_set) ; // print result to check array structure so that you can use it correctly in foreach 
    foreach($notes_set as $note){ 
    echo $note['content']; 
    echo "<br />"; 
    } 
?> 
+0

これですべての音符が取り出されましたが、2番目の部分の 'echo $ note;'で "配列から文字列への変換"に署名します、なぜですか? – sklrboy

+0

'echo $ note ['content'];'は解決策でした。あなたの助けをありがとう! – sklrboy

+0

@sklrboyようこそ。歓声:) :)。あなたを助けてうれしい。彼らが有用であればあなたも他の人に投票することができます。 –

3

あなたはそうのようなすべての結果を得ることができます

while($row = $result->fetch_assoc()){ 
    echo $row['content'] . '<br />'; 
} 
+0

正しい点。+10 –

1

保存データ。それをforeachまたはforループを通して使用してください。

$content = []; 
while($row = mysqli_fetch_assoc($result)){ 
    $content[] = $row['content']; 
} 
return $content; 
+1

正しいポイントを上げる。 +10 –

1

あなたが反復処理する必要があり、この

function find_notes_by_id($user_id) { 
    global $connection; 

    $safe_user_id = mysqli_real_escape_string($connection, $user_id); 

    $query = 'SELECT content '; 
    $query .= 'FROM notes '; 
    $query .= 'WHERE user_id = '.$safe_user_id; 
    $result = mysqli_query($connection, $query); 

    //mysqli_result Object ([current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 6 [type] => 0) 

    confirm_query($result); 
    $row = array(); 
    while($result1 = mysqli_fetch_assoc($result)){ 
     //Array ([content] => First!) = it only shows the very first element 
     $row[] = $result1; 
    } 
    return $row; 
} 
+0

@Anant申し訳ありません。同じ変数を2回使用しました。 –

+0

今は正しいです。私はその部分を編集しました。あなたにも+10。 –

1

のような機能を変更する必要があります。 問題は

$x = array(); 
while($row = mysqli_fetch_assoc($result)) 
{ 
    $x[] = $row; 
} 
return $x; 
+0

最後の値だけを返します。すべての結果ではありません。あなたの論理についてもう一度考えてみてください。 –

+0

yeh私は配列シンボル – Athar

+0

が間違っています。あなたは正しいです。 +10 –

1

にする代わりに、効率的な方法であることと、アレイ

として結果を得るでしょう関数に$接続変数グローバルパスとして$接続を宣言することは、このコード

$row = mysqli_fetch_assoc($result); 
return $row; 

変更であります今

<?php  
      function find_notes_by_id($user_id,$connection) { 

      $safe_user_id = mysqli_real_escape_string($connection, $user_id); 

      $query = 'SELECT content '; 
      $query .= 'FROM notes '; 
      $query .= 'WHERE user_id = '.$safe_user_id; 
      $result = mysqli_query($connection, $query); 


      confirm_query($result); 

     $data = array(); // create an array 
     while($row = mysqli_fetch_assoc($result)){ 
     $data[] = $row; 
    } 
     return $data; 
     } 
     ?> 

この

のような関数を呼び出します
+0

正しいポイント。 +10 –

関連する問題