基本PHP - SQL查询中的条件连接

Jak*_*ake 0 php

我遇到了一些我认为应该是一些相当简单的PHP的问题.它在WordPress中运行,但问题不应该是WordPress特定的.$ wpdb-> get_results()只是一种查询WordPress数据库而无需使用连接字符串的方法.我还使用了几个$ _GET命令.

这是我到目前为止所拥有的:

$Data = $wpdb->get_results("SELECT *
    FROM database.table
    WHERE sem.MonthNum >= " .$_GET["minMonth"]. "
    AND sem.MonthNum <= " .$_GET["maxMonth"]. "
    AND sem.Year  >= " .$_GET["minYear"]. "
    AND sem.Year <= " .$_GET["maxYear"]. ");
Run Code Online (Sandbox Code Playgroud)

只要填充$ _GET,这就有效.我想添加一种默认值,如果$ _GET为空,则设置一个数字,如果它不为空,则抓取该数字.有点......

$Data = $wpdb->get_results("SELECT *
    FROM database.table
    WHERE sem.MonthNum >= " if(!$_GET){echo 1;} else {echo ".$_GET[\"minMonth\"]. "} "
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用......可能是一些愚蠢的PHP语法错误,我不确定所有的echo语句和其他引号中的引号等等.

Sco*_*ers 8

对于每个变量,请执行以下操作:

$minMonth = isset($_GET["minMonth"]) ? intval($_GET["minMonth"]) : 1;
... 
"WHERE sem.MonthNum >= " .minMonth. "
Run Code Online (Sandbox Code Playgroud)

intavl调用将使$ _GET值转换为整数(如果尚未调整),这将保护您免受SQL注入安全问题的影响.如果你需要用字符串做类似的事情,请改用mysql_escape_string().