我写了这个查询,
$sql = "SELECT `candidates`.`candidate_id`, `candidates`.`first_name`, `candidates`.`surname`, `candidates`.`DOB`, `candidates`.`gender`, DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) AS `age`, `candidates`.`talent`, `candidates`.`location`, `candidates`.`availability`, `candidate_assets`.`url`, `candidate_assets`.`asset_size`
FROM `candidates`
LEFT JOIN `candidate_assets` ON `candidate_assets`.`candidates_candidate_id` = `candidates`.`candidate_id`
WHERE `candidates`.`availability` = 'yes'";
if(isset($type)) {
$sql .= ' AND candidates.talent = '. "$type";
}
if(isset($skill))
{
$sql .= ' AND candidates.skill = '."$skill";
}
if(isset($gender))
{
$sql .= ' AND candidates.gender = '."$gender";
}
$query = $this->db->query($sql);
return $query->result_array();
我希望将$type
,$skill
和$gender
变量作为字符串传递,无论变量包含的是什么,在sql中返回包含在“”中,这是否可能?我该怎么做?
答案 0 :(得分:2)
我基于该方法的外观以及您之前的一些问题,并根据此您可以使用
对这些变量$this->db->escape_str($value)
,所以无论它们是什么类型,它们都会被转义为字符串。
答案 1 :(得分:0)
' AND candidates.talent = "'. $type . '"';
您可能想要使用mysql_real_escape_string()
来正确转义输入。
答案 2 :(得分:0)
试试这个:
if(isset($type)) {
$sql .= ' AND candidates.talent = "'. $type . '"';
}
与其他两个条款类似。
答案 3 :(得分:0)
if(isset($gender))
{
$gender = mysql_real_escape_string($gender);
$sql .= " AND candidates.gender = '$gender'";
}