このクエリでは苦労しています。私はajax呼び出しの部分文字列に対して2つのフィールドの1つを照合しようとしています。名前の入力を開始すると、姓または名と一致する必要があります。部分的な文字列にLIKEとCONCATを使用してmysqlクエリでパラメータ化されたPHP
パラメータ化されたクエリがLIKE文で0行を返しています。
私は何か単純なものが欠けているのですが、パラメータが部分文字列のために正しく渡されていないと考えることができます。
ここでは、db内のデータをアップロードするコードを示します。私は隠されたキャラクターが潜んでいるかもしれないと心配しましたが、私はそれらをすべて取り除いたと思います。
$fStu = new SplFileObject('../resources/students.txt');
$fStu->seek($count);
list($year,$building,$id,$last,$middle,$first,$gender,$grade,$gradYear) = explode(",",$fStu->current());
if (!empty($year)){
$stuQuery = "INSERT INTO students (LastName, MiddleName, FirstName, StudentId, Gender, Grade, GradYear) VALUES (?,?,?,?,?,?,?)";
$stuStmt = $connect->prepare($stuQuery);
$last = preg_replace("/[^a-zA-Z0-9']/", "", $last);
$first = preg_replace("/[^a-zA-Z0-9']/", "", $first);
$middle = preg_replace("/[^a-zA-Z0-9']/", "", $middle);
$gender = preg_replace("/\r|\n|\s+/", "", $gender);
$id = intval(preg_replace('/\D/', '', $id));
$gradYear = intval(preg_replace('/\D/','', $gradYear));
$grade = intval(preg_replace('/\D/','', $grade));
$stuStmt->bind_param("sssisss", $last, $middle, $first,$id,$gender,$grade,$gradYear);
$stuStmt->execute();
echo $count . "||" . $last . ", " . $first . " (" . $id . ")";
}
else {
$count = -1;
echo $count . "||Complete.";
}
ここでは、クエリ文字列の部分名を渡すメインページです。
$(document).ready(function(){
$("#name").on("change paste keyup", function(e){
e.preventDefault();
$.ajax({url: "process/students.php?name=" + $("#name").val(),
success: function(result){
$("#results").removeClass("hidden");
$("#results").html(result);
}
});
});
アップロードされるデータのセットです。
> > Current School Year,Current Building,Student Id,Student Last Name,Student Middle Name,Student First Name,Student Gender,Student
> > Grade,Grad Year 2018,111,11111111111,Doe,Jane,,F,09,2021
> > 2018,111,22222222222,Doe,John,,M,09,2021
なぜ 'concat() 'を使うのですか?クエリを介して送信する前に、変数にシンボルを添付するだけではどうですか? – GrumpyCrouton
私もそれを試しました(https://stackoverflow.com/questions/9138807/proper-pdo-syntax-for-parameterized-query-using-like-with-wildcards-ex)。結果は同じだと思います。ワイルドカードを追加する場所はどこですか?まだ同じ問題です。 – edumacator
データベースに含まれているデータを使って実際の検索用語の例を表示できますか? – GrumpyCrouton