php と mysql に関しては、私はまだ赤ん坊だと言わざるを得ませんが、皆さんの助けを借りて毎日学習し、改善しています。ええ、MySQL を使用して PHP で検索エンジンを作成しましたが、ある程度は機能していますが、PDOException
「David Smith」のような複数のキーワードで検索するとエラー メッセージが表示され、「David」で検索するとエラー メッセージが表示されるという課題があります。または「スミス」だけでは、エラーは発生しません。
正直なところ、どこが間違っていたのかわかりません。データベースにwampserverPDO db connection
を使用しています。以下はコードのサンプルです。
//search button name and id is 'search'
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
for($x=0; $x<=0; $x++ );
if($x==1)
$construct .="UserID LIKE '%$search_each%' or Requestor LIKE '%$search_each%' or EmploymentType LIKE '%$search_each%'";
else
$construct .="AND UserID LIKE '%$search_each%' AND Requestor LIKE '%$search_each%' AND EmploymentType LIKE '%$search_each%'";
}
$sql = "SELECT COUNT(*) as num FROM ".TBL_STUDENTS." WHERE $construct";
$result = $database->connection->prepare($sql);
$result->execute(array($construct));
私が言ったように、「David」のような単一のキーワードで検索すると問題なく動作しますが、「David Smith」のようなキーワードで検索するとエラーが発生します。
以下は私が得るエラーメッセージです:
Fatal error: Uncaught exception '`PDOException`' with message '`SQLSTATE[42000]`:
Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax
to use near 'UserID LIKE '%Gift%' or Requestor LIKE `%Gift%` or EmploymentType LIKE `%Gift%` at line 3'
in `C:\wamp\www\ccnl\script\search_db.php` on line 108
行は以下のこのコードです
$result->execute(array($construct));