Первый код ниже работает как шарм и единственная разница между таблицей «postclass» &. Таблица «tpost» в моей базе данных - это имя.PDO-запрос, не возвращающий строки
$keyword = $_POST['keyword'];
$country = "Thailand";
if($keyword === "English" || $keyword === "อังกฤษ" || $keyword === "ภาษาอังกฤษ" || $keyword === "english"){
if($keyword === "English" || $keyword === "english"){
$sub_alt = "อังกฤษ";
}
if($keyword === "อังกฤษ" || $keyword === "ภาษาอังกฤษ"){
$sub_alt = "English";
}
}
if(isset($sub_alt)){
$sql="SELECT * FROM `tpost` WHERE `subject` LIKE :search OR `subject` LIKE :search2 AND `country` LIKE :country AND date >= (DATE_SUB(CURDATE(), INTERVAL 150 DAY)) ORDER BY id DESC LIMIT 50";
} else {
$sql="SELECT * FROM `tpost` WHERE `country` LIKE :country AND `subject` LIKE :search AND date >= (DATE_SUB(CURDATE(), INTERVAL 150 DAY)) ORDER BY id DESC LIMIT 50";
}
$stmt=$dbh->prepare($sql);
$stmt->bindValue(':search','%'.$keyword.'%', PDO::PARAM_STR);
if(isset($sub_alt)){
$stmt->bindValue(':search2','%'.$sub_alt.'%', PDO::PARAM_STR);
}
$stmt->bindValue(':country','%'.$country.'%', PDO::PARAM_STR);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$result = $stmt->fetchAll();
foreach($result as $row){
echo "WORKING";
}
} else {
echo "NO ROWS RETURNED";
}
К сожалению, этот снимок должен делать то же самое, но он не возвращает строк. Таблицы в базе данных устанавливаются в InnoDB и UTF-8 и идентичны по структуре. $ _POST ['keyword'] также публикует правильные данные. Использование метода JQuery $ .post() для публикации. Это что-то в этом скрипте, из-за чего BELOW SCRIPT не возвращает строки. Протестировано на Firefox и Chrome. У кого-нибудь есть идея?
$keyword = $_POST['keyword'];
$country = "Thailand";
if($keyword === "English" || $keyword === "อังกฤษ" || $keyword === "ภาษาอังกฤษ" || $keyword === "english"){
if($keyword === "English" || $keyword === "english"){
$sub_alt = "อังกฤษ";
}
if($keyword === "อังกฤษ" || $keyword === "ภาษาอังกฤษ"){
$sub_alt = "English";
}
}
if(isset($sub_alt)){
$sql="SELECT * FROM `postclass` WHERE `subject` LIKE :search OR `subject` LIKE :search2 AND `country` LIKE :country AND `date` >= (DATE_SUB(CURDATE(), INTERVAL 150 DAY)) ORDER BY `id` DESC LIMIT 50";
} else {
$sql="SELECT * FROM `postclass` WHERE `country` LIKE :country AND `subject` LIKE :search AND `date` >= (DATE_SUB(CURDATE(), INTERVAL 150 DAY)) ORDER BY `id` DESC LIMIT 50";
}
$stmt=$dbh->prepare($sql);
$stmt->bindValue(':search','%'.$keyword.'%', PDO::PARAM_STR);
if(isset($sub_alt)){
$stmt->bindValue(':search2','%'.$sub_alt.'%', PDO::PARAM_STR);
}
$stmt->bindValue(':country','%'.$country.'%', PDO::PARAM_STR);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$result = $stmt->fetchAll();
foreach($result as $row) {
echo "WORKING";
}
} else {
echo "NO ROWS RETURNED";
}
Я предполагаю, что это что-то в заявлении $ sql, но почему первый запрос будет работать, а не второй запрос? –
Также переменная $ sub_alt и оператор if работают правильно ... Srsly должен быть $ sql var ... –