我得到的警告是:
警告:mysqli_result :: fetch_array()期望参数1为long,对象在第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> </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>';
}
?>
答案 0 :(得分: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变量。因此,将它们存储在数组中也没有多大好处,这需要在PHP中进行额外的工作才能转换为SQL。
$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");