Php 从数据库记录填充$\u请求变量值-如何?

Php 从数据库记录填充$\u请求变量值-如何?,php,dynamic,variables,Php,Dynamic,Variables,我正在尝试从表单选择中获取发布的值。选择名称是动态的,这意味着名称值由数据库记录定义 在表单处理脚本中,我希望通过$\u请求回调该值 我无法预先知道$\u请求的值是什么(例如,$var=$\u请求['foo'];),但我知道该值来自数据库表。 知道了这一点,我创建了一个数据库调用,然后使用foreach循环遍历可能的值 我想为每个过程创建一个$\u请求 例如 我遇到的问题是,在本地服务器上,我得到一个值,但在Web服务器上,我一个也得不到。您可以看到我正在使用一个回音来查看发生了什么$varnv

我正在尝试从表单选择中获取发布的值。选择名称是动态的,这意味着名称值由数据库记录定义

在表单处理脚本中,我希望通过
$\u请求
回调该值

我无法预先知道
$\u请求
的值是什么(例如,
$var=$\u请求['foo'];
),但我知道该值来自数据库表。 知道了这一点,我创建了一个数据库调用,然后使用
foreach
循环遍历可能的值

我想为每个过程创建一个
$\u请求

例如

我遇到的问题是,在本地服务器上,我得到一个值,但在Web服务器上,我一个也得不到。您可以看到我正在使用一个
回音来查看发生了什么<代码>$varnval

有人能为这个问题提出解决办法吗

非常感谢


KF

您服务器上的PHP版本是否可能早于4.1?这就是引入$\u请求变量的时候


您可以执行
检查服务器上的PHP版本。

尝试以下方法来测试您的案例:

$result = mysql_query("SELECT * FROM `dshop_options_name`") or die("Something went wrong trying to retrieve the names of the options: ".mysql_error());

$options = array();

while ($each = mysql_fetch_array($result))
    $options[] = $each;

mysql_free_result($result);

echo "Name of options: ".join(", ",$options)."<br><br>\n";

foreach ($options as $option)
{
    if (isset($_REQUEST[$option]))
        echo "\$_REQUEST[\$option]: ".$_REQUEST[$option]."<br>\n";
    elseif (isset($_GET[$option]))
        echo "\$_GET[\$option]: ".$_GET[$option]."<br>\n";
    elseif (isset($_POST[$option]))
        echo "\$_POST[\$option]: ".$_POST[$option]."<br>\n";
}

echo "<pre>_REQUEST vars:<br>\n".print_r($_REQUEST,true)."</pre>\n";
echo "<pre>_GET vars:<br>\n".print_r($_GET,true)."</pre>\n";
echo "<pre>_POST vars:<br>\n".print_r($_POST,true)."</pre>\n";
$result=mysql\u query(“从`dshop\u options\u name`中选择*”)或die(“尝试检索选项名称时出错:”.mysql\u error());
$options=array();
while($each=mysql\u fetch\u数组($result))
$options[]=每个$options;
mysql_free_result($result);
echo“选项名称:”.join(“,”,$options)。“

\n”; foreach($options作为$option) { 如果(isset($\ U请求[$选项]) 回显“\$\请求[\$选项]:”$\请求[$选项]。“
\n”; elseif(isset($\u GET[$option])) 回显“\$\u GET[\$option]:”$\u GET[$option]。“
\n”; elseif(isset($邮政[$选项]) 回显“\$\u POST[\$option]:”$\u POST[$option]。“
\n”; } echo“\u请求变量:
\n”。打印($\u请求,true)。“\n”; echo“\u GET vars:
\n”。打印($\u GET,true)。“\n”; echo“\u POST vars:
\n”。打印($\u POST,true)。“\n”;
否,服务器实际上较新(版本)。我已经用
\u post
\u get
两种方法尝试了这个方法,结果相同。我正在使用超级全局来简化测试。嗯……我不知道为什么会发生这种情况,但你可以通过数组_keys()数组循环查找匹配项,然后通过索引获得值?感谢你的建议,尽管我正在创建一个非常复杂的应用程序,但我对数组和方法的所有用法的理解仍然相当基本。你能提供一个例子,或者指向一个资源吗?这必须在早上(这里是格林威治时间01:27)工作,所以恐慌模式开始了:)作为脚注,我知道数据在数组中,因为我直接通过数据库调用它。从每个结果(db)中创建一个变量以进行检查是我的主要问题。。。在url中,数据如下所示
index.php?Print+Type=Canvas+Print
我要求脚本对照数据库值检查该值,因此出现了一个错误,帖子中的名称被发送为
Print+Type
,值被发送为
Canvas+Print
,但数据库记录中的psaces当然不是
+
。你认为这可能是问题所在吗?我将尝试一个str_替换,但我没有信心。。
$result = mysql_query("SELECT * FROM `dshop_options_name`") or die("Something went wrong trying to retrieve the names of the options: ".mysql_error());

$options = array();

while ($each = mysql_fetch_array($result))
    $options[] = $each;

mysql_free_result($result);

echo "Name of options: ".join(", ",$options)."<br><br>\n";

foreach ($options as $option)
{
    if (isset($_REQUEST[$option]))
        echo "\$_REQUEST[\$option]: ".$_REQUEST[$option]."<br>\n";
    elseif (isset($_GET[$option]))
        echo "\$_GET[\$option]: ".$_GET[$option]."<br>\n";
    elseif (isset($_POST[$option]))
        echo "\$_POST[\$option]: ".$_POST[$option]."<br>\n";
}

echo "<pre>_REQUEST vars:<br>\n".print_r($_REQUEST,true)."</pre>\n";
echo "<pre>_GET vars:<br>\n".print_r($_GET,true)."</pre>\n";
echo "<pre>_POST vars:<br>\n".print_r($_POST,true)."</pre>\n";