1

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

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

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

从 url " ?table_name1.column1=22" 我只通过 $_GETtable_name1_column1=22

你会怎么解决?

4

4 回答 4

3

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

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

于 2013-08-27T08:26:50.167 回答
0

这是 PHP 的文档化功能。这基本上是因为 PHP 不能有带点的变量名。

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

手动在 GET 和 POST 中将点转换为 _

于 2013-08-27T08:42:28.817 回答
0

您可以使用 php 的序列化函数在 url 中传递文本“table_name1.column1”。但是为此,您需要做一些编码来获得结果。下面我给出了您可以使用的代码:

第1页.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


?>

希望对你有帮助 :)

于 2013-08-27T09:33:33.830 回答
-1

您需要用 分隔每个参数&

所以:?table=table_name1&column=column1

于 2013-08-27T08:24:50.007 回答