在 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'];

?>