0

ユーザー入力に似た名前をデータベースで検索するだけの関数があります。ただし、パラメーター :uname で Like を使用することはできません。私がウェブを見ている人は皆、私にこのようなことをするように勧めています

$username = "$%username%";

ただし、クエリは結果を返しません。

これを聞いたらちゃんと答えてくれるのでデータベースがちゃんとできているのはわかっています

SELECT *  FROM $schema.pessoa WHERE nome LIKE %Mike%

ただし、私のコードでは $username に「Mike」が含まれていますが、何も返されません。%username が適切に作成されていないと想定しましたが、エコーを作成すると、実際に必要な文字列「Mike」が含まれています。したがって、問題はパラメーターで質問している方法にあるようですが、わかりません

function SearchUser($username) {
  global $dbh, $schema;
  try {
    $username = "$%username%";
    $stmt = $dbh->prepare("SELECT *  FROM $schema.pessoa WHERE nome LIKE :uname");      
    $stmt->bindParam(':uname', $username);
    $stmt->execute();

    $result = $stmt->fetch(PDO::FETCH_ASSOC);
     if(empty($result))
       {echo 'empty';}
     return $result;
    }
catch(PDOException $e) {
  $_SESSION["s_errors"]["generic"][] = "ERRO[32]: ".$e->getMessage();
  header("Location: list.php");
  die;
}
4

1 に答える 1

0

それは私には正しく見えますが、

この方法で試してみて、違いがあるかどうかを確認することをお勧めします

$username = 'Mike';    
$stmt->bindValue(":uname", "%".$username."%");

編集。

あらためて見ると、なんか似合わないなぁ…。

$username = '$%username%';  

そうじゃないかな

$username = '%'.$username.'%';
于 2012-04-26T15:55:39.297 に答える