我正在将参数字符串传递给我的php代码,但我不完全知道参数是什么。假设我传入了一个包含
的字符串?&cName_1=fbe&cName_2=ege&cBirthday_1=r3rg&cBirthday_2=fev
我不仅需要知道每个参数是什么,而且还需要名称和生日来排队查询。
我正在尝试以下代码,但一次只能使用一个参数
$email = $_GET['email'];
foreach($_GET as $key => $value){
$query = "INSERT INTO directory(cName, cBirthday, username) VALUES('$value', '$pBirthday', '$email')";
$result = mysqli_query($con, $query);
}
答案 0 :(得分:0)
通过使用方括号表示数组索引/键,您可以方便地操作PHP的基于请求的超全局变量(即$_GET
和$_POST
)。
例如,类似查询字符串
?email=me@example.com&c[0][name]=fbe&c[0][birthday]=r3rg&c[1][name]=ege&c[1][birthday]=fev
产生以下$_GET
结构
Array
(
[email] => me@example.com
[c] => Array
(
[0] => Array
(
[name] => fbe
[birthday] => r3rg
)
[1] => Array
(
[name] => ege
[birthday] => fev
)
)
)
要添加更多参数,只需添加
&c[n][name]=value&c[n][birthday]=value
其中n
是下一个索引。
在代码中使用它会更容易,尤其是使用预准备的语句
// Make MySQLi report errors as exceptions
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$email = $_GET['email'];
$stmt = $con->prepare(
'INSERT INTO directory (cName, cBirthday, username) VALUES (?, ?, ?)');
$stmt->bind_param('sss', $cName, $cBirthday, $email);
foreach ($_GET['c'] as $c) {
$cName = $c['name'];
$cBirthday = $c['birthday'];
$stmt->execute();
}
答案 1 :(得分:-1)
要从字符串中获取值,可以执行以下操作:
<?php
$string = "?&cName_1=fbe&cName_2=ege&cBirthday_1=r3rg&cBirthday_2=fev";
$get = explode('&', $string ); // explode with and
foreach ( $get as $key => $value) {
$valn[ substr( $value, 0 , strpos( $value, '=' ) ) ] = substr( $value, strpos( $value, '=' ) + 1 ) ;
}
// access your query param
$cName_1 = $valn['cName_1'];
$cName_2 = $valn['cName_2'];
$cBirthday_1 = $valn['cBirthday_1'];
$cBirthday_2 = $valn['cBirthday_2'];
?>