这可能很奇怪,因为这是一个非常直接的情况,但由于某种原因不起作用
我有一个测试数组,所以这里是我的“数组”
$getData =
Array
(
[0] => Array
(
[id] => 5
[duck] => 3
)
[1] => Array
(
[id] => 8
[duck] => 6
)
)
那么我有一个foreach如下......
foreach ($getData as $k => $v) {
$duck = $v['duck'];
$cn = conection();
$query = "select * from table where duck ='$duck'";
$doit = $cn->query($query);
$row = $doit->fetch_assoc();
if ($row['duck'] == $duck) {
echo "We got a duck!";
} else {
echo "We don't have a duck";
}
}
所以我的想法是我有2个带有值的子键的键...如果我只是按照我的喜好来处理每个值我没有问题我得到,3和6,但查询只得到执行一次,所以它只检查数组中的第一个值,忽略第二个值。为什么?..
整个想法是,在这种情况下...如果DUCK存在于表中然后只更新该列,如果DUCK不存在然后插入DUCK ...但问题是查询只执行一次,即使在foreach中有6个主键...这里有2个键0和1 ..所以查询应该执行2次,因此IF语句应该在每次查询执行时检查,而是直接发送给ELSE比如价值不存在或不相等,实际上鸭子确实存在...
感谢您抽出宝贵时间
<小时/> 好吧,似乎我犯了一个错误,试着快点我把原始代码作为一个例子......所以这是我的实际代码... Joomla 2.5.X
foreach ($getData as $k => $v) {
$duck = $v['duck'];
$d = JFactory::getDbo();
$query = $d->getQuery(true);
$query
->select($d->quoteName(array('duck')))
->from($d->quoteName('#__ducks_items'))
->where($d->quoteName('duck') . ' = ' .$duck);
$d->setQuery($query);
$ress = $d->loadResult();
// print_r($k);
// print_r($ress);
if($ress == $sku) {
echo 'We have a duck: ' . $duck ;
} else {
echo 'A new duck has born: ' . $sku ;
}
print_r($getData);
}
希望这有帮助......
谢谢。
答案 0 :(得分:1)
您将数据提取为
$rows = $doit->fetch_assoc();
并在if条件中使用$ row。
if ($row['duck'] == $duck)
应该是
if ($rows['duck'] == $duck)
答案 1 :(得分:0)
试试这个,$rows
不是$row
if ($rows['duck'] == $duck) {
echo 'We got a duck!';
} else {
echo "We don't have a duck";
^^^^^
}