我正在寻找一种通过 php 和 GET 参数传递数据库表名和列名的可能性。
我有一个具有以下结构的数据网格:table_name1.column1、table_name2.column1、table_name2.column1。
网格有一个搜索功能,我需要这些参数。
从 url " ?table_name1.column1=22
" 我只通过 $_GETtable_name1_column1=22
你会怎么解决?
使用 base64 对变量进行编码并在使用前进行解码。我知道那很脏。
但是 php 变量不支持句点(点)
这是 PHP 的文档化功能。这基本上是因为 PHP 不能有带点的变量名。
$x.y = 1 // is an invalid variable name
您可以使用 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
?>
希望对你有帮助 :)
您需要用 分隔每个参数&
。
所以:?table=table_name1&column=column1