Php foreach内部的查询如何
问这个问题可能有点奇怪,因为这是一种非常直截了当的情况,但由于某些原因,它不起作用Php foreach内部的查询如何,php,mysql,arrays,foreach,Php,Mysql,Arrays,Foreach,问这个问题可能有点奇怪,因为这是一种非常直截了当的情况,但由于某些原因,它不起作用 我有一个用于测试的数组,所以这里是我的“数组” 所以我有一个理由如下 foreach ($getData as $k => $v) { $duck = $v['duck']; $cn = conection(); $query = "select * from table where duck ='$duck'"; $doit = $cn->query($query); $row = $doit-&
我有一个用于测试的数组,所以这里是我的“数组” 所以我有一个理由如下
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";
}
}
所以我的想法是,我有两个键和子键的值。。。如果我只是想随心所欲地对每个值进行hecho,那么我得到、3和6是没有问题的,但是查询只执行一次,因此它只检查数组中的第一个值,而忽略第二个值。。为什么
整个想法是在这种情况下。。。如果表中存在DUCK,则只需更新该列;如果DUCK不存在,则插入DUCK。。。但问题是查询只执行一次,即使foreach中有6个主键。。。这是仅有的两个键0和1。。因此,查询应该执行2次,因此每次执行查询时IF语句都应该进行检查,但它会将我直接发送到ELSE,比如值不存在或不相等,而实际上duck确实存在
感谢您抽出时间。好吧,我似乎犯了一个错误,我试图加快我做了原始代码作为一个例子。。。这是我的实际代码。。。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);
}
希望这有助于
谢谢。您正在以
$rows = $doit->fetch_assoc();
并在if条件中使用$row
if ($row['duck'] == $duck)
应该是
if ($rows['duck'] == $duck)
试试这个,它是
$rows
而不是$row
if ($rows['duck'] == $duck) {
echo 'We got a duck!';
} else {
echo "We don't have a duck";
^^^^^
}
如果这是您的确切代码,它应该抛出一个解析错误。查看底部突出显示的语法(
“我们没有鸭子”
)您需要避开“
您真的不应该打开和关闭与每个站点的连接。不,这不是实际的代码,感谢您注意到。。。只是一个打字错误,你可以看到我有很多。。。我只是想表达整个想法……更不用说他正在使用$rows=$doit->fetch_assoc()
但随后将其引用为if($row['duck']
此外,您不需要实际获取数据,只需计算结果(如果您使用的是MySQLi use)
if ($rows['duck'] == $duck) {
echo 'We got a duck!';
} else {
echo "We don't have a duck";
^^^^^
}