以下是我的表格:

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]"));


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

最佳答案

您是否尝试使用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]"));


希望这可以帮助。

关于mysql - 如何在mysql IN运算符的codeigniter中使用绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43385760/

10-12 17:54