我需要在服务器端的函数内的查询字符串中传递从前端接收的一些$_POST
数据,但是当我尝试转储查询时它看起来没有$_POST
值
在这里,我尝试模拟了情境,你可以看到我变空``
而不是roads
$roads = $_POST;
$roads['column'] = "roads";
function tatoo(){
$sql = "SELECT `$roads` FROM country";
echo var_dump($sql)."<br>";
}
tatoo();
这里是Dumped SQL:
string(19)&#34; SELECT`` FROM country&#34;
再次,这只是模拟情况,实际上代码看起来像
$roads = $_POST['roads'];
function tatoo(){
$sql = "SELECT `$roads` FROM country";
echo var_dump($sql)."<br>";
}
tatoo();
答案 0 :(得分:2)
如果你知道变量的范围,你需要在调用tatoo
函数时使用全局变量或传递参数,并且正确的方法将作为参数传递
<?php
if(isset($_POST['column'])){
tatoo($_POST['column']);
}
function tatoo($column){
$sql = "SELECT `$column` FROM country";
echo var_dump($sql)."<br>";..
}
此外,您的查询似乎容易受到 sql注入 的影响,看起来您还没有使用papered语句,这实际上并不是一个好主意。
答案 1 :(得分:1)
function tatoo(){
$roads = $_POST["roads"];
$sql = "SELECT `{$roads}` FROM country";
echo var_dump($sql)."<br>";
}
tatoo();
这更好。
$roads = mysql_real_espace_string($_POST["roads"]);
function tatoo($roads){
$sql = "SELECT `{$roads}` FROM country";
echo var_dump($sql)."<br>";
}
tatoo($roads);
答案 2 :(得分:0)
在PHP中你不能在函数内使用你需要的函数来使用全局$ var inside函数或者将$ var作为参数传递
试试这个
$roads = $_POST;
$roads['column'] = "roads";
function tatoo(){
global $roads;
$sql = "SELECT `$roads['column_name']` FROM country";
echo var_dump($sql)."<br>";
}
tatoo();
或强>
$roads = $_POST;
$roads['column'] = "roads";
function tatoo($roads){
$sql = "SELECT `$roads['column_name']` FROM country";
echo var_dump($sql)."<br>";
}
tatoo();
答案 3 :(得分:0)
尝试在函数中使用参数。
这样的事情:
//$roads = $_POST['roads'];
$roads = "test";
function tatoo($param){
$sql = "SELECT `$param` FROM country";
echo var_dump($sql)."<br>";
}
tatoo($roads);
经过测试,确实有效。
string(27)&#34; SELECT`test` FROM country&#34;