1
php 및 mysql과 함께 매개 변수가있는 쿼리에 LIKE 절을 사용하려고합니다. 내가 시도 할 때마다, 나는 다른 오류를 얻고있다.PHP LIKE 절이있는 매개 변수가있는 매개 변수가있는 mysql 문은 동기화되지 않은 명령을 반환합니다.
here, here 및 here의 솔루션을 구현하려고했습니다. 이들 각각은 서로 다른 오류를 던지고 있으므로 문제는 제가 실종되었다는 것입니다. 실행 함수에서 배열을 사용하려고하면 Command가 동기화되지 않습니다. 값 또는 매개 변수를 바인딩하려고하면 문자열 오류에 바인드 할 수 없습니다.
나는 실종됐다.
도움 주셔서 감사합니다.
<?
$access = 3;
$dbConnect = true;
require "../scripts/php/scriptSecurity.php";
// Partial name given by user.
$namePart = $_GET["namePart"];
// Deal with name parts. last, first middle or first middle last, or first last
if (strpos($namePart, ',') !== false){
$arr_name = explode(",", $namePart);
$lName = $arr_name[0];
if (strpos($arr_name[1], " ") !== false){
$firstName = substr($arr_name[1], 0, strpos($arr_name[1], " ", 1));
$middleName = substr($arr_name[1], strpos($arr_name[1], " ", 1));
}
}
elseif (strpos($namePart, " ") !== false){
$arr_name = explode(" ", $namePart);
if (sizeOf($arr_name) == 3) {
$fName = $arr_name[0];
$lName = $arr_name[3];
$mName = $arr_name[2];
}
elseif (sizeOf(arr_name) == 2) {
$fName = $arr_name[0];
$lName = $arr_name[1];
$mName = $arr_name[1];
}
else {
$fName = $namePart;
$mName = $namePart;
$lName = $namePart;
}
}
else {
$fName = $namePart;
$lName = $namePart;
$mName = $namePart;
}
// Get rid of extra spaces.
$fName = str_replace(" ", "", $fName);
$lName = str_replace(" ", "", $lName);
$mName = str_replace(" ", "", $mName);
// build query
$query = "SELECT LastName, FirstName, MiddleName, StudentId, Gender, Grade, GradYear FROM students WHERE LastName LIKE ? OR FirstName LIKE ? OR MiddleName LIKE ? ORDER BY LastName, FirstName LIMIT 20";
$stmt = $connect->prepare($query);
// execute
$stmt->execute(array('%'.$lName.'%', '%'.$fName.'%', '%'.$mName.'%'));
$result = $stmt->get_result();
// post results
if (!$result) {
echo $connect->error;
echo "No Results";
}
else {
echo "Results";
while ($row = $result->fetch_assoc()){
?>
<div><? echo $row["LastName"] . ", " . $row["FirstName"] . "(" . $row["StudentId"] . ")"?> </div>
<?php
}
}
?>
감사를 CONCAT와 wildchar을 관리하는 간단한 방법을 사용하고 PARAM으로 순수한 var에 할당 할 수 있습니다 잘못된 방법으로 wildchar와 PARAM에 문자열을 전달합니다. 나는 이것을 시도하고 지금 얻고있다 : boolean – edumacator
에 멤버 함수 bind_param()을 호출했다. lastname 컬럼 이름을 놓쳤다. .. 어디에서 .. 누락 된 코드를 추가하면 .. 왜 downvote ??? – scaisEdge
Ok ... 코드에서 실수를했습니다. 그냥 고쳐서 이제는 결과를 얻지 만 첫 번째 캐릭터에 대한 결과 만 얻고 있습니다. $ namePart가 하나의 문자라면, 그 문자로 상위 20 개의 결과를 얻습니다. 두 번째 문자를 입력 할 때 오류가 발생하지 않지만 결과가 없습니다. – edumacator