在 PHP 中获取参数并查询
Grab Parameters And Query in PHP
我正在将一串参数传递给我的 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);
}
您可以对 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();
}
要从字符串中获取值,您可以这样做:
<?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'];
?>
我正在将一串参数传递给我的 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);
}
您可以对 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();
}
要从字符串中获取值,您可以这样做:
<?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'];
?>