好的,所以我真的不知道标题是什么,因为对我来说不应该有问题。
我正在尝试构建一个SQL查询,我能做到的唯一方法是在第一个ID =之后添加一个字符串OR语句。
由于我不能在ID = X之间有一个OR状态,我认为我做了一个简单的事情,只计算为1然后每次迭代后1,它简单地放置" OR&# 34;在下一个号码之前。
这在第二次迭代中工作正常,但第三次和第四次跳过在数字之间添加OR,因此它变为ID = 123或56 43 12.
代码是一个更大的东西的一部分,所以}}}}}}}}}}}}}}}}}}}}}
$count=0;
while($resultArr = $result->fetch_array(MYSQLI_NUM)){
if($count>=1)
{
echo "IN COUNT IF<br>";
$sqlQuery .= " OR ";
}
else $count++;
echo "COUNT= ". $count . "<br>";
$sqlQuery .= " {$resultArr[0]} ";
if (!$result) {
die('Contact Admin! Invalid SQL query: ' . mysql_error());
}
}
}
# lägg till sista biten och kolla hur det ska sorteras
$sqlQuery .= "AND post_status='publish' " . $this->returnSort();
echo "DEBUG- buildKategoryQuery QUERY= <br>{$sqlQuery}<br>";
return $sqlQuery;
}
这是从echo:
添加最后一位后生成的查询COUNT = 1
如果计算
COUNT = 1
COUNT = 1
DEBUG- buildKategoryQuery QUERY =
SELECT post_title,guid,post_date,comment_count FROM wp_posts
WHERE ID = 159 OR 595 187 AND post_status =&#39; publish&#39;
所以看起来它基本上在第三次迭代时说$ count不再等于或高于1,但它也不想添加到计数中。所以它基本上只是跳过整个if / else语句...
编辑: 对于那些要求
的人来说,这是完整的功能function buildKategoryQuery()
{
# första biten
$sqlQuery = "SELECT post_title, guid, post_date, comment_count FROM
`wp_posts` WHERE ID ="; # "{$resultArr[0]} AND post_status='publish' ";
# börja loopa och kolla vilka kategorier att leta efter
foreach ($this->catMap as $key => $value) {
# kolla ifall kategori är "vald" och isåfall hämta den
if(!$this->kategoriArr[$key]) continue;
# hämta post IDs
$katCommand = "SELECT object_id FROM `wp_term_relationships` WHERE
term_taxonomy_id=" . $value;
$result = $this->sql->query($katCommand);
// echo "number of rows returned for {$key}-{$value}: ".$result->num_rows . "</br>"; // debug - visa rows och kategori, id
if (!$result) {
die('Contact Admin! Invalid SQL query: ' . mysql_error());
}
# bygg fullt kommand
$count=0;
while($resultArr = $result->fetch_array(MYSQLI_NUM)){
if($count>=1)
{
echo "IN COUNT IF<br>";
$sqlQuery .= " OR ";
}
else $count++;
echo "COUNT= ". $count . "<br>";
$sqlQuery .= " {$resultArr[0]} ";
if (!$result) {
die('Contact Admin! Invalid SQL query: ' . mysql_error());
}
}
}
# lägg till sista biten och kolla hur det ska sorteras
$sqlQuery .= "AND post_status='publish' " . $this->returnSort();
echo "DEBUG- buildKategoryQuery QUERY= <br>{$sqlQuery}<br>";
return $sqlQuery;
}
答案 0 :(得分:1)
我相信你想说的是IN。
SELECT * FROM table WHERE id = 159 OR 595 OR 187
是无效的SQL;相反,它应该是SELECT * FROM table WHERE id = 159 OR id = 595 OR id = 187
。
较短的语法是使用IN
运算符:SELECT * FROM table WHERE id IN (159, 595, 187)
。
答案 1 :(得分:1)
添加“OR”的更简单方法是使用数组:
$parts = array();
while($resultArr = $result->fetch_array(MYSQLI_NUM)) {
$parts[] = $resultArr[0];
}
if( !empty( $parts ) ) {
$sqlQuery .= "(" . implode( " OR ", $parts ) . ")";
}
希望这有帮助。
编辑: 关于为什么你的循环不能按预期工作:你只在其他情况下递增你的$ count,而不是大多数迭代结束的if情况......
答案 2 :(得分:1)
#Reads through each frame, calculates the timestamp, places it on the frame and
#exports the frame to the output video.
while current_frame < total_frames:
success, image = video.read()
elapsed_time = video.get(cv2.CAP_PROP_POS_MSEC)
current_frame = video.get(cv2.CAP_PROP_POS_FRAMES)
timestamp = initial + dt.timedelta(microseconds = elapsed_time*1000)
cv2.putText(image, 'Date: ' + str(timestamp)[0:10], (50,int(height-150)), cv2.FONT_HERSHEY_COMPLEX_SMALL, 2, (255, 255, 255), 3)
cv2.putText(image, 'Time: ' + str(timestamp)[11:-4], (50,int(height-100)), cv2.FONT_HERSHEY_COMPLEX_SMALL, 2, (255, 255, 255), 3)
pipe.stdin.write(image.tostring())
在foreach循环的每次迭代期间运行,$katCommand
也会重置为0。当您尝试添加到外部查询并依赖该$count
变量来确定是否添加&#34; OR&#34;时,这会出现问题。到WHERE子句。
您可以将所有内容组合到一个查询中,而不是运行多个SQL查询:
$count