3

私が受け取っている警告は次のとおりです。

警告:mysqli_result :: fetch_array()は、パラメーター1が長く、オブジェクトが...行103で指定されていることを想定しています。

103行目の横にコメントしましたwhile ($row = $result->fetch_array($result)) {

質問2:これをインクルードファイルに保存できますか、それともすべきですか?

質問3:$queryこれらの買い手、売り手などのいずれかを配列でどこかに保存できますか?どのように?

/* FETCH CONTACT INFORMATION */

$query = ("SELECT * FROM contacts WHERE contacttype IN ('Buyer','Seller','Buyer / Seller','Investor') AND leadstatus = 'New' ORDER BY date DESC");

$ID = $row ['ID'];     
$firstname = $row ['firstname'];     
$lastname = $row['lastname'];
$ID = $row['ID'];   
$partner  = $row['spousefirst'];   
$phonecell = $row['phonecell'];
$email = $row['email'];
$date = $row['date'];
$contacttype = $row['contacttype'];
$agentassigned = $row['agentassigned'];
$leadstatus = $row['leadstatus'];

$result = $mysqli->query($query) or die ("Error: ".mysqli_error($mysqli));

echo'
  <table class="results" id="results">
    <thead> 
      <tr> 
        <th width="10"><input type="checkbox" name="checkAll" id="checkAll" class="checkall" value="check all"></th>
        <th>NAME</td> 
        <th>PARTNER</td> 
        <th>PHONE</td> 
        <th>EMAIL</td> 
        <th>DATE</td> 
        <th>TYPE</td> 
        <th>AGENT</td> 
        <th>STATUS</td> 
        <th>NOTES</td> 
        <th>TASKS</td> 
        <th>&nbsp;</td>
       </tr> 
     </thead>';

while ($row = $result->fetch_array($result)) {  // THIS IS LINE 103

      echo'
     <tbody>       
       <tr>
        <td width="10"><input type="checkbox" name="" id="" value="'.$ID.'"></td>
        <td><a href="/backend/leads/view/?ID='.$ID.'"><strong>'.$firstname.' '.$lastname.'</strong></a></td>
        <td><a href="/backend/leads/view/?ID='. $ID.'">'.$partner.'</a></td>
        <td>'.$phonecell.'</td>
        <td><a href="mailto:'. $email.'">'.$email.'</a></td>
        <td>'.date("M jS, g:i A", strtotime($date)).'</td>
        <td>'.$contacttype.'</td>
        <td>'.$agentassigned.'</td>
        <td>'.$leadstatus.'</td>
        <td><a href="/backend/contacts/notes.php?ID='.$ID.'">View</a> +</td>
        <td><a href="/backend/contacts/todo.php?ID='.$ID.'">View</a> +</td>
        <td><a href="/backend/contacts/deletesuccess.php?ID='.$ID.'">D</a></td>
       </tr>
     </tbody>       
    </table>';

}
?>
4

1 に答える 1

4

オブジェクト指向モードではfetch_array()、フェッチタイプ(MYSQLI_ASSOC, MYSQLI_NUM)を指定するパラメータであり、結果リソースを取得しません。

while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

ループでは$row、プレーン変数ではなく、からのキーを使用することを想定しています。変数の割り当てを上からループに移動します。

while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

  // Move these assignments into the loop so they are available to your
  // echo statement when constructing your <tbody>
  $ID = $row ['ID'];     
  $firstname = $row ['firstname'];     
  $lastname = $row['lastname'];
  $partner  = $row['spousefirst'];   
  $phonecell = $row['phonecell'];
  $email = $row['email'];
  $date = $row['date'];
  $contacttype = $row['contacttype'];
  $agentassigned = $row['agentassigned'];
  $leadstatus = $row['leadstatus'];

  echo'
 <tbody>       
   <tr>
    <td width="10"><input type="checkbox" name="" id="" value="'.$ID.'"></td>
    <td><a href="/backend/leads/view/?ID='.$ID.'"><strong>'.$firstname.' '.$lastname.'</strong></a></td>
    <td><a href="/backend/leads/view/?ID='. $ID.'">'.$partner.'</a></td>
    <td>'.$phonecell.'</td>
    <td><a href="mailto:'. $email.'">'.$email.'</a></td>
    <td>'.date("M jS, g:i A", strtotime($date)).'</td>
    <td>'.$contacttype.'</td>
    <td>'.$agentassigned.'</td>
    <td>'.$leadstatus.'</td>
    <td><a href="/backend/contacts/notes.php?ID='.$ID.'">View</a> +</td>
    <td><a href="/backend/contacts/todo.php?ID='.$ID.'">View</a> +</td>
    <td><a href="/backend/contacts/deletesuccess.php?ID='.$ID.'">D</a></td>
   </tr>
 </tbody>       
</table>';

}

編集

他のいくつかの質問について...

これをインクルードファイルに保存することで得られるメリットはあまりないと思います。コードはそれほど多くありません。他の場所で再利用する予定がない場合は、このファイルから移動してもメリットはありません。

クエリは静的であり、PHP変数を使用していません。したがって、それらを配列に格納することもあまりメリットがありません。配列に格納すると、SQLに変換するためにPHPで追加の作業が必要になります。

$options = array('Buyer','Seller','Buyer / Seller','Investor');
// Join them into a string and quote both ends of it.
// If this includes any user input, you must call `$mysqli->real_escape_string()` on _each_ of them.
// Since in this one instance it is static in your code though without variables, that isn't necessary here
$options = "'" . implode("','", $options) . "'";
$query = ("SELECT * FROM contacts WHERE contacttype IN ($options) AND leadstatus = 'New' ORDER BY date DESC");
于 2012-06-29T21:40:33.217 に答える