大佬教程收集整理的这篇文章主要介绍了php-有时只显示一行?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个sql表,一个包含按脚本的“手动插入的数据”,另一个包含按脚本的“自动插入的数据”.
因此,我想“比较”两个数据库,然后在另一个脚本中突出显示差异.
// $currentdate_today_midnight is a timestamp
$sql_getLive = "SELECT * FROM worksheets WHERE entry_date > $currentdate_today_midnight";
$req_getLive = $cnx->query($sql_getLivE);
$req_getLive->setFetchMode(PDO::FETCH_OBJ);
// countAll counts all rows for a table and a condition
$countLive = countAll("worksheets", "entry_date > $currentdate_today_midnight");
$sql_getCriter = "SELECT * FROM criter_live WHERE entry_date > $currentdate_today_midnight";
$req_getCriter = $cnx->query($sql_getCriter);
$req_getCriter->setFetchMode(PDO::FETCH_OBJ);
$countCriter = countAll("criter_live", "entry_date > $currentdate_today_midnight");
if($countLive == 0){
/* If there is no live (manual datas) inserted */
echo "EMPTY";
die();
}
while ($check_criter = $req_getCriter->fetch()) {
while ($check_live = $req_getLive->fetch()) {
if ($check_live->Train_id == $check_criter->Train_id) {
/* check_live = worksheets */
/* check_criter = criter_live */
echo $check_live->Train_id . "|" . $check_criter->entry_date . "|" . $check_live->entry_date . "|". $check_criter->left_date . "|". $check_live->entry_date . "|". $check_criter->Train_type . "|". $check_live->Train_type . "|". $check_criter->entry_number . "|". $check_live->entry_number . "|". $check_criter->left_number . "|". $check_live->left_number. "#";
}
}
}
因此,我尝试制作“一阵子”,但它不起作用,我只得到一个“ echo”……而不是17(由于countAll函数而返回).
我做错了吗?还是有其他解决方案?
谢谢!
解决方法:
编辑:我假设您在两个表中具有相同的数据.
删除第二个while循环:
while ($check_criter = $req_getCriter->fetch()) {
$check_live = $req_getLive->fetch();
if ($check_live->Train_id == $check_criter->Train_id) {
echo $check_live->Train_id . "|" . $check_criter->entry_date . "|" . $check_live->entry_date . "|". $check_criter->left_date . "|". $check_live->entry_date . "|". $check_criter->Train_type . "|". $check_live->Train_type . "|". $check_criter->entry_number . "|". $check_live->entry_number . "|". $check_criter->left_number . "|". $check_live->left_number. "#";
}
}
基本上,在外循环的第一次迭代中,您一直在从$req_getCriter中提取一行,并将其与$req_getLive中的所有其他行进行比较.第二次迭代将不起作用,因为已获取$req_getLive中的所有行.
以上是大佬教程为你收集整理的php-有时只显示一行?全部内容,希望文章能够帮你解决php-有时只显示一行?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。