スクリプトの機能: ユーザーがアーティスト名や曲名を検索できるようにする
他のユーザーへのメリット: スクリプトは、他の stackoverflow ユーザーが作業してサイトを検索できるように簡単に変更できます。クエリをデータベース構造に変更するだけです。
$query_Recordset1 = sprintf("SELECT * FROM lyrics WHERE title LIKE '%%%s%%' ORDER BY title ASC", $colname_Recordset1);
スクリプトに関する問題: 曲のタイトルには機能しますが、検索を変更するドロップダウンを使用せずに、アーティスト名と曲のタイトルを同時に検索する方法がわかりません。結果がない場合にもエラーを返します
アーティストの例 (Rihanna - id : 16689) (title : Unfaithful - id : 228106) http://www.thelyricsfinder.com/song.php?sid=228106&aid=16689
- 結果が得られなかった場合のエラー出力を受け取りました (以下)
..
ERROR :
SQL 構文にエラーがあります。1 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
$maxRows_Recordset1 = 100;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
$pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
$colname_Recordset1 = "-1";
if (isset($_POST['term'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_POST['term'] : addslashes($_POST['term']);
}
mysql_select_db($database_main, $main);
$query_Recordset1 = sprintf("SELECT * FROM lyrics WHERE title LIKE '%%%s%%' ORDER BY title ASC", $colname_Recordset1);
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $main) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
if (isset($_GET['totalRows_Recordset1'])) {
$totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
$all_Recordset1 = mysql_query($query_Recordset1);
$totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
OBJECTIVE : $_POST['term'] に渡される単一の検索からスクリプトが 2 つのテーブル/行を検索するようにしますが、KICKER は結果を 2 つの個別の変数に返して個別に表示します。
- ARTIST/アーティスト
- 歌詞・タイトル
これを行う方法を見つけるのを手伝ってくれてありがとう。本に戻って答えを見つけようとします。
2012 年 11 月 2 日追加 (下に結果が見つからない処理を追加することで、問題の一部を修正できることはわかっています。