我很确定社区已经对这个问题进行了很多询问,但我还没有找到任何好的答案。
我有这段代码:
$keyword = '%'.strtoupper($_POST['keyword']).'%';
$limitMaterial = 'AS-%';
$findMaterial = $oracle->prepare('SELECT inventory_item_id, segment1, description, inventory_item_status_code FROM mtl_system_items_b WHERE segment1 LIKE ? AND (segment1 LIKE ? OR description LIKE ?)');
$findMaterial->bindParam(1, $limitMaterial, PDO::PARAM_STR);
$findMaterial->bindParam(2, $keyword, PDO::PARAM_STR);
$findMaterial->bindParam(3, $keyword, PDO::PARAM_STR);
$findMaterial->execute();
$checkRow = $findMaterial->fetch(PDO::FETCH_ASSOC);
$boldKeyword = '<font color="red"><b>' . $keyword . '</b></font>';
if($checkRow !== false){
var_dump($checkRow); // this is for testing only
foreach($findMaterial as $dataMaterial){
var_dump($dataMaterial); // this is for testing only
$dataMaterial = array_change_key_case($dataMaterial,CASE_LOWER);
$code = str_ireplace($keyword,$boldKeyword,$dataMaterial['segment1']);
$desc = str_ireplace($keyword,$boldKeyword,$dataMaterial['description']);
if(isset($_POST['idf'])){
$idf = $_POST['idf'];
echo '<div class="show" align="left" onclick="select('.$idf.',this); return false;"><span>'.$code.'</span><span style="visibility: hidden; font-size:1px;" class="find_material_'.$idf.'">'.$dataMaterial['segment1'].'</span></br>'.$desc.'</div>';
} else {
echo '<div class="show" align="left"><span>'.$code.'</span><span style="visibility: hidden; font-size:1px;" class="basic_code">'.$dataMaterial['segment1'].'</span></br>'.$desc.'</div>';
}
}
} else {
echo '<div class="show" align="left">Part Code Not Found</div>';
}
$findMaterial = null;
我想问的是,如何检查我的查询是否返回结果?。我目前的代码正在运行,但我有一个问题:
$checkRow = $findMaterial->fetch(PDO::FETCH_ASSOC);
从结果中取一行,所以我在foreach循环中缺少一行。我已经尝试了fetchColumn()(它有相同的问题)和rowCount()(其中它为SELECT语句返回0)。
如果可能,我想避免使用&#34; SELECT COUNT(1)FROM [table]&#34;检查数据是否存在,或者只在第一行中执行foreach循环中发生的事情。
感谢任何帮助。谢谢
答案 0 :(得分:0)
您可以使用COUNT()
检查您的查询返回结果,而不使用SELECT COUNT(1) FROM..
$checkRow = $findMaterial->fetchAll();
if (count($checkRow) > 0) {
foreach ($checkRow as $dataMaterial) {
// your code
}
} else {
echo "NO RESULT FOUND";
}