我试图在我的网站上进行搜索,但出于某种原因,我的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>类型的,非常感谢您的帮助!
发布于 2014-03-04 11:31:17
首先,不要使用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';还有更多,但这应该会让你开始。
https://stackoverflow.com/questions/22170695
复制相似问题