2016-11-23 14 views
-1

データベースから糸の詳細を取得するための小さなスクリプトを作成しています。私はajaxのライブ検索スクリプトを使用してデータベースから基本的なwhileループ関数のデータを取得しますが、結果divタグにマッサージを送信して空の結果を処理します。行カウント関数は実行されませんがwhileループはif条件で動作します

私はこの問題について最初に投稿されましたが、私の問題を解決しなかったので、スタックコミュニティからこれを尋ねます。私の問題は行カウントを得ることではなく、ifコマンドが動作しない理由です。

私は以下のPHPスクリプトを使用しています。

$searchString = "SELECT yarnId FROM yarndetails WHERE yarnId LIKE concat('%',:searchStr,'%')"; 
$dbSql = $dbConnect->prepare($searchString); 
$dbSql -> bindParam(':searchStr', $_GET["q"]); 
$dbSql -> execute(); 

$getCount = "SELECT COUNT(*) FROM yarndetails WHERE yarnId LIKE concat('%',:sStr,'%')"; 
$dbCount = $dbConnect->prepare($getCount); 
$dbCount -> bindParam(':sStr', $_GET["q"]); 
$dbCount -> execute(); 
$dataCount = $dbCount -> rowCount(); 

if($dataCount = 1){ 
    while($row = $dbSql -> fetch(PDO::FETCH_ASSOC)) { 
     echo $row['yarnId'] . "\n"; 
    } 

}else{ 
     echo "No Data"; 
} 

私はStackOverfllowを検索し、使用することです行をカウントするための最良の方法を発見した「SELECT COUNT(8)..」の文が、もし状態がしばらくの間を直接通過し、どのようにいくつかに何か問題がありますループ。

これを行うには良い方法がありますか、私が何か不足している場合はどうかしてください。あなたはAJAXのためにそれを使用している考える

+2

'if($ dataCount == 1){' - もしあなたが 'count(*)を選択すると、 'あなたは常に1レコードのqith 1列(カウント)を得るので、ループするその他の情報はないでしょう –

+0

または' if($ dataCount){} 'は'!empty($ dataCount) 'を意味します。 – Xorifelse

答えて

0
$sql = "SELECT yarnId FROM yarndetails WHERE yarnId LIKE ?"; 
$stmt = $dbConnect->prepare($sql); 
$stmt->execute(['%'.$_GET["q"].'%']); 
$data = $stmt->fetchAll(PDO::FETCH_ASSOC); 

if($data){ 
    echo json_encode($data); 
}else{ 
    echo "No Data"; 
} 

JSで空の配列を伝えるために非常に簡単あってはならないよう、条件は、あまりにも基本的に不必要です。最後の5行を作成するだけです

echo json_encode($data); 
関連する問題