将$ _POST变量传递给服务器端的函数

时间:2015-09-18 06:06:19

标签: php

我需要在服务器端的函数内的查询字符串中传递从前端接收的一些$_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();

4 个答案:

答案 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;