2017-04-13 54 views
0

下面是我的表:如何使用绑定在PARAM笨在MySQL IN操作符

CREATE TABLE `sku` (
    `id` int(11) NOT NULL, 
    `sk_val` text CHARACTER SET utf8 COLLATE utf8_unicode_ci, 
    `date_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

INSERT INTO `sku` (`id`, `sk_val`, `date_time`) VALUES 
(3, '[removed]alert('xss');[removed]', '2017-04-12 12:58:38'), 
(4, '[removed]alert('xss');[removed]', '2017-04-12 13:46:34'); 

我使用CI框架。当我尝试从sku表中获取数据时,它返回false。以下是我的代码。

$query = "SELECT * FROM sku WHERE sk_val IN (?)"; 
$result = $this->db->query($query, array("[removed]alert('xss');[removed]")); 

任何帮助将不胜感激。提前致谢。

回答

0

您是否尝试过使用FIND_IN_SET(field_name,param)而不是IN(param)?通常情况下,FIND_IN_SET就像一个param的魅力一样工作。然后你可以这样写你的查询:

$query = "SELECT * FROM sku WHERE FIND_IN_SET(sk_val,?); 
$result = $this->db->query($query, array("[removed]alert(\'xss\');[removed]")); 

希望这会有所帮助。

+0

你的代码不工作。仍然是虚假的 – Alok