0
<?php
//wall ===================================================
if($_POST['submit'] == "submit"){
// connect to the database
include("dbinfo.inc.php");

  $client_id = $_POST['client_id'];
  echo $client_id;
  $query="select * from messages where client_id='$client_id'";
  $result = $mysqli->query( $query );
  $row = $result->fetch_assoc();
                                        while ($row = $result->fetch_object())
                                        {
                                                $id = $row->msg_id;
                                                $mes = $row->message;
                                                $mes = nl2br($mes);
                                                $cdate = $row->date_post;
                                                $msg ="{$mes} <br> . {$cdate}";

//wall ===================================================
?>
<li class="bar<?php echo $id; ?>">
<div align="left" class="post_box">
<span style="padding:10px"><?php echo $msg; ?> </span>
<span class="delete_button"><a href="#" id="<?php echo $id; ?>" class="delete_update">X</a></span>
<span class='feed_link'><a href="#" class="comment" id="<?php echo $id; ?>">comment</a></span>
</div>
<div id='expand_box'>
<div id='expand_url'></div>
</div>
<div id="fullbox" class="fullbox<?php echo $id; ?>">
<div id="commentload<?php echo $id; ?>" >

</div>
<div class="comment_box" id="c<?php echo $id; ?>">
<form method="post" action="" name="<?php echo $id; ?>">
<textarea class="text_area" name="comment_value" id="textarea<?php echo $id; ?>">
</textarea><br />
<input type="submit" value=" Comment " class="comment_submit" id="<?php echo $id; ?>"/>
</form>
</div>
</div>
</li>
<?php                                   }
//wall ===================================================
     $mysqli->close();
}
//wall ===================================================
?>

私のスクリプトは、ユーザーの入力に相当するすべてのデータを出力することになっています。

EX 入力 client_id "2"

クエリ:

msg_id  message  date_sent  client_id

1        a        1/1/1         1  
2        b        2/2/2         1  
3        c        3/3/3         1
4        d        1/2/3         1   
5        e        2/2/2         2    
7        e        2/2/2         2    
8        g        2/2/2         2    
9        f        8/8/8         3

表示するだけです

  7        e        2/2/2         2    
  8        g        2/2/2         2

最初のものをスキップします

 5        e        2/2/2         2

client_id「3」を入力した場合

出力はありませんが、次のように表示されているはずです。

 9        f        8/8/8         3

私のスクリプトをチェックして、ここで何が間違っているかを確認していただけますか?

4

2 に答える 2

3

あなたが呼んでいます

$row = $result->fetch_assoc();

結果のループを開始する前に:

while ($row = $result->fetch_object()) {
...
}

$rowこれには、結果セットの最初の行をスキップする効果があります (最初の呼び出しから何もしないため)。

于 2012-11-01T19:30:58.703 に答える
0

fetch_assoc() または fetch_object() のいずれかを使用します。PHP マニュアルの例を次に示します。

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* free result set */
    $result->free();
}

/* close connection */
$mysqli->close();
于 2012-11-01T19:33:57.783 に答える