Как вычислить SQL QUERY для КАЖДОГО ISSET? - PullRequest
0 голосов
/ 26 июля 2010

Привет, ребята, я застрял в точке и мне нужна ваша помощь.Я хочу изменить SQL QUERY для каждого параметра $ _GET.Я использую это:

<?
if (isset($_GET['page']) ) {
   $pageno = $_GET['page'];
} else {
   $pageno = 1;
} // if
$query = mysql_query("SELECT count(id) FROM m3_music_mp3");
$query_data = mysql_fetch_row($query);
$numrows = $query_data[0];
$rows_per_page = 30;
$lastpage      = ceil($numrows/$rows_per_page);
$pageno = (int)$pageno;
if ($pageno > $lastpage) {
   $pageno = $lastpage;
} // if
if ($pageno < 1) {
   $pageno = 1;
} // if
$limit = 'ORDER BY id DESC LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
$query = mysql_query("SELECT * FROM m3_music_mp3 $limit");
?>

Это если IF music.php? Page = 1 установлен $ query = "SELECT * FROM m3_music_mp3 ORDER BY id IDC LIMC X, X", но я хочу сделать этоIF music.php? Word = A & page = 1 set $ query = "SELECT * FROM m3_music_mp3 WHERE title LIKE '$ word%' ORDER BY id DESC LIMIT X, X"

Я пытался

if(isset($_GET['word']) && isset($_GET['page'])) {
$limit .= 'WHERE....'
}

что-то вроде но не работает.благодарю вас.и извините за плохой английский и плохое знание php обо мне

Ответы [ 3 ]

0 голосов
/ 26 июля 2010

Ваше решение должно работать нормально, может быть, вам просто нужен пробел перед WHERE, например. = 'WHERE ... распечатайте окончательную строку запроса, чтобы увидеть, где она идет не так.

0 голосов
/ 26 июля 2010

в основном САК прав.но вы можете уменьшить свой код.Предел предела не является обязательным, это должно работать просто отлично: Редактировать изменил бит кода для копирования и проверки;)

<?
if (isset($_GET['page']) ) {
   $pageno = $_GET['page'];
} else {
   $pageno = 1;
} // if
$limit = "";
    if(isset($_GET['word'])) {
      $word = mysql_real_escape_string($_GET['word']);

      $limit = " WHERE title LIKE '%$word%'"
    }
$query = mysql_query("SELECT count(id) FROM m3_music_mp3" . $limit);
$query_data = mysql_fetch_row($query);
$numrows = $query_data[0];
$rows_per_page = 30;
$lastpage      = ceil($numrows/$rows_per_page);
$pageno = (int)$pageno;
if ($pageno > $lastpage) {
   $pageno = $lastpage;
} // if
if ($pageno < 1) {
   $pageno = 1;
} // if
$limit .= ' ORDER BY id DESC LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
$query = mysql_query("SELECT * FROM m3_music_mp3 $limit");
?>
0 голосов
/ 26 июля 2010

Должно быть:

if(isset($_GET['word'])) {
  $word = mysql_real_escape_string($_GET['word']);

  $limit = " WHERE title LIKE '%$word%' ORDER BY id DESC LIMIT " .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
}
else
{
  $limit = " ORDER BY id DESC LIMIT " .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
}

$query = mysql_query("SELECT * FROM m3_music_mp3 $limit") or die(mysql_error());
...