变量需要包装成一个字符串

时间:2011-10-26 12:29:07

标签: php mysql

我写了这个查询,

    $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中返回包含在“”中,这是否可能?我该怎么做?

4 个答案:

答案 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'";
 }