Php 选择所有记录和其他记录
下面是一个简单的mysqli查询,用于从mysql数据库中选择特定记录:Php 选择所有记录和其他记录,php,mysql,Php,Mysql,下面是一个简单的mysqli查询,用于从mysql数据库中选择特定记录: foreach ($getData as $data) { { $sql = "SELECT * FROM `myTable` WHERE `bookid` = '".$data['ID']."' "; $result = $db->query( $sql );
foreach ($getData as $data) { {
$sql = "SELECT * FROM `myTable` WHERE `bookid` = '".$data['ID']."' ";
$result = $db->query( $sql );
while ($zeile = $result->fetch_object()) {
// DO SOMETHING
}
}
问题是:
如何获取(最佳实践)所有其他记录,而这些记录不会使用此查询筛选器进行选择?它可以是
foreach ($getData as $data) { {
$sql = "SELECT * FROM `myTable` WHERE `bookid` = '".$data['ID']."' ";
$result = $db->query( $sql );
while ($zeile = $result->fetch_object()) {
// DO SOMETHING
$query2 = "select * from 'myTable' WHERE 'bookid' != ".$zeile['ID']."'";
$result2 = $db -> query($query2);
// do something...
}
}
或
在循环中运行连续的、或多或少相同的查询从根本上说是一种不好的方法。创建要使用的
$data['ID']
值列表,然后使用一个查询检索该列表中的所有行,使用第二个查询检索该列表以外的所有行:
重要提示:此代码假定可以信任$getData[]['ID']
中的值。i、 e.他们在进入本代码之前已经过验证,或者他们来自可靠的来源
// Create a list:
$inList = '('.implode(',', array_column($getData, 'ID')).')';
$sqlIn = "SELECT * FROM `myTable` WHERE `bookid` IN $inList";
// run the query. Check for errors
if (($result = $db->query( $sqlIn )) === false) {
throw new Exception($db->error);
}
while ($zeile = $result->fetch_object()) {
// DO SOMETHING
}
// Now use the same list to exclude those rows
$sqlOut = "SELECT * FROM `myTable` WHERE `bookid` NOT IN $inList";
// run the query. Check for errors
if (($result = $db->query( $sqlOut )) === false) {
throw new Exception($db->error);
}
while ($zeile = $result->fetch_object()) {
// DO SOMETHING
}
最佳实践
$sql=“SELECT*FROM
myTable`WHEREbookid
>'19'`嗯,坏例子。值20并非每次都相同。这是一个动态值for循环有什么意义?为什么不在SQL中执行此操作?您最好使用in
一次获取所有记录,然后对其余记录使用not in
。很抱歉造成混淆。我更新了我的第一篇帖子。对于每个循环,循环都是实循环
// Create a list:
$inList = '('.implode(',', array_column($getData, 'ID')).')';
$sqlIn = "SELECT * FROM `myTable` WHERE `bookid` IN $inList";
// run the query. Check for errors
if (($result = $db->query( $sqlIn )) === false) {
throw new Exception($db->error);
}
while ($zeile = $result->fetch_object()) {
// DO SOMETHING
}
// Now use the same list to exclude those rows
$sqlOut = "SELECT * FROM `myTable` WHERE `bookid` NOT IN $inList";
// run the query. Check for errors
if (($result = $db->query( $sqlOut )) === false) {
throw new Exception($db->error);
}
while ($zeile = $result->fetch_object()) {
// DO SOMETHING
}