我遇到了一些我认为应该是一些相当简单的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语句和其他引号中的引号等等.
对于每个变量,请执行以下操作:
$minMonth = isset($_GET["minMonth"]) ? intval($_GET["minMonth"]) : 1;
...
"WHERE sem.MonthNum >= " .minMonth. "
Run Code Online (Sandbox Code Playgroud)
intavl调用将使$ _GET值转换为整数(如果尚未调整),这将保护您免受SQL注入安全问题的影响.如果你需要用字符串做类似的事情,请改用mysql_escape_string().