2010-07-26 63 views
0

你好,我被困在一个点,我需要你的帮助。我想为每个$ _GET参数更改SQL QUERY。我使用的是这样的:?为每个ISSET绘制SQL查询?

<? 
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页= 1时$查询= “SELECT * FROM m3_music_mp3 ORDER BY ID DESC LIMIT X,X”,但我想要做的是,如果音乐.PHP?字= A &页面= 1套$查询= “SELECT * FROM m3_music_mp3 WHERE标题LIKE '$字%' ORDER BY ID DESC LIMIT X,X”

我试图

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

东西喜欢但不起作用。谢谢。和对不起我的英语不好& PHP知识贫乏

回答

0

基本上sAc是正确的。但是你可以减少你的代码。原因限制心不是可选此schould工作就好了: 编辑改变了代码位是禁止复制和可测试;)

<? 
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

好的。这也起作用。谢谢。但现在分页不能正常工作分页仍然适用于所有数据而不是多少标题行:S – 2010-07-26 14:09:17

+0

获取isset字位并将其放置BEFORE $ query = mysql_query(“SELECT count(id)FROM m3_music_mp3”); 更改$ query = mysql_query(“SELECT count(id)FROM m3_music_mp3”); to $ query = mysql_query(“SELECT count(id)FROM m3_music_mp3”。$ limit); – teemitzitrone 2010-07-26 14:14:54

0

它应该是:

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()); 
+0

感谢您的评论。它工作正常。但我如何增加$ _GET的?是使用elseif(isset)的东西应该工作? – 2010-07-26 13:41:29

0

您的解决方案应该可以正常工作,也许你只需要之前WHERE,像='WHERE ...打印的空间。取出你的最终查询字符串,看看它出错的地方。