db表名称作为php GET参数中的别名?

时间:2013-08-27 08:19:39

标签: php html

我正在寻找通过php和GET参数传递db表名和列名的可能性。

我有一个具有以下结构的数据网格: table_name1.column1,table_name2.column1,table_name2.column1。

网格有一个搜索功能,我需要这些参数。

从网址“?table_name1.column1=22”我只通过$ _GET table_name1_column1=22

你会如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

使用base64对变量进行编码并在使用前进行解码。 我知道那很脏。

但php变量不支持句点(点)

答案 1 :(得分:0)

这是PHP的文档功能。它主要是因为PHP不能有带点的变量名。

$x.y = 1  // is an invalid variable name

MANUAL Convert dots to _ in GET & POST

答案 2 :(得分:0)

您可以使用php的serialize函数在url中传递文本“table_name1.column1”。但为此你需要做一些编码才能得到结果。下面我给出了你可以使用的代码:

<强> page1.php中

<?php
$test = serialize('table_name1.column1=11::table_name2.column2=22');
?>
<a href='Page2.php?qs=<?php echo $test?>'>test</a>

使用此$ test作为查询字符串传递。在上面的例子中,我传递了锚标记点击。

<强>使page2.php

使用以下代码对查询字符串进行反序列化并使用这些值。

<?php

$test2 = unserialize($_GET['qs']);

$ex = explode('::',$test2);

$new_arr = array();
foreach($ex as $val)
{
    $ex2 = explode('=',$val);
    $new_arr[$ex2[0]] = $ex2[1];
}

echo $new_arr['table_name1.column1']; //print 11
echo $new_arr['table_name2.column2']; //print 22


?>

希望这会对你有所帮助:)。

答案 3 :(得分:-1)

您需要将每个参数与&分开。

所以:?table=table_name1&column=column1