PHP语法错误或访问冲突:1064 - 在where子句中使用变量

时间:2015-08-19 15:01:30

标签: php mysql

在这个上拔头发,我已经尝试了一些改变变量的转义字符的方法,但没有任何工作,包括改为'"。 $ R"'等。

如果我将变量硬编码为常量则可行。例如$ r =" Word&#34 ;;

我已将变量重命名为随机字母,以防它们是保留字。

我已经设置了mysql的日志记录,我已经比较了这些语句并且它们相同,唯一的区别是一个是通过文本框提交的,另一个是通过常量设置的。

型号:

 public static function searchProfile()
    {
    $r = Request::post('w');
    $args = "";
    if ($r) {$args = "`info_tradingstatus` = '$r'";}
    $database = DatabaseFactory::getFactory()->getConnection();
    $sql = "SELECT profile_id, profile_name FROM profile_seeker WHERE $args";

查看:

  <input type="text" name="w" class="form-control" placeholder="Enter Keyword" aria-describedby="basic-addon1">

控制器:

public function search_action()
{
ProfileModel::searchProfile(
Request::post('w'),
Redirect::to('profile/searchresults'));
}

1 个答案:

答案 0 :(得分:0)

嗨我认为问题是当$ r为空时,请尝试:

public static function searchProfile()
    {
    $r = Request::post('w');
    $args = " 1 ";
    if ($r) {$args = "`info_tradingstatus` = '".$r."'";} // just in case
    $database = DatabaseFactory::getFactory()->getConnection();
    $sql = "SELECT profile_id, profile_name FROM profile_seeker WHERE $args";