PHP搜索查询无效

时间:2014-03-04 11:27:57

标签: php mysql sql search select

我正在尝试在我的网站上进行搜索,但由于某种原因,我的SELECT查询在执行时交换了关键字和列名的名称。以下是我的查询代码:

if(empty($_POST)=== false){
    $output = '';
    $error = '';
    $input = $_POST['search_input'];
    $i=0;
    if($input){
        $keyword = explode(" ", $input);
        require ('core/dbconnection.php');
        //If a user is logged in check if the user is Admin or Customer. 
        if(isset($_SESSION['userid'])){ 
            if($admin == 1){
                //enter admin code here
            }
        }else{
            //If user is not logged in search items table only.
            $search_items = "SELECT * FROM fyp_items WHERE ";
            foreach($keyword as $k){
                $i++;
                if($i == 1){
                    $search_items .= "name LIKE $k OR description LIKE $k";
                }else
                    $search_items .= " OR name LIKE $k OR description LIKE $k";
            }
            $item_qry = mysql_query($search_items)or die(mysql_error());

        }
    }else
        $error = '<p class="pageerror">Please enter your search terms.</p>';

$search_items正在连接搜索查询,然后由$item_query执行。

所以我搜索了“conwerse”并回显了我得到以下$search_items变量: http://awesomescreenshot.com/0302ft5mc3

然而,当我运行查询时,我得到了这个mysql_error ...... http://awesomescreenshot.com/0552ft6bb4

似乎在我运行查询时交换关键字和列名称。我的数据库表是InnoDB&gt;的类型。我非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

首先,不要使用mysql_query,因为不推荐使用所有mysql_函数。使用mysqli或pdo。

其次,使用mysql_escape_string();转义关键字,例如

$k = mysql_real_escape_string($k);

第三,当你回复它时,你的查询需要看起来像这样:

SELECT * FROM fyp_items WHERE `name` LIKE 'conwerse' OR `description` LIKE 'conwerse';

还有更多,但这应该让你开始。