Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli准备了声明和用户信息_Php_Mysql_Mysqli - Fatal编程技术网

Php mysqli准备了声明和用户信息

Php mysqli准备了声明和用户信息,php,mysql,mysqli,Php,Mysql,Mysqli,我这样做对吗 $user = $_POST['username']; $email = $_POST['usermail']; $stmt = $mysqli->stmt_init(); if (!$stmt) { echo "Init failed"; } else { $cmd = "INSERT INTO people (username, email, sign_up_date) VALUES (?, ?, NOW() )"; if ($stmt->

我这样做对吗

$user = $_POST['username'];
$email = $_POST['usermail'];

$stmt = $mysqli->stmt_init();
if (!$stmt) {
    echo "Init failed";
} else {
    $cmd = "INSERT INTO people (username, email, sign_up_date) VALUES (?, ?, NOW() )";
    if ($stmt->prepare($cmd)) {
        $stmt->bind_param('ss', $user, $email );
        $stmt->execute();

        echo $stmt->affected_rows . " row(s) inserted";

        $stmt->close();

    } else {
        echo "Prepare failed";
    }
    mysqli_close($mysqli);
    }
这是我的表格:

<section class="loginform tmr">
    <form name="login" action="regi.php" method="post" accept-charset="utf-8">
        <label for="username">Username: </label><br />
            <input type="username" name="username" placeholder="Handle" required><br />
            <input type="hidden" name="sign_up_date" value="<?php echo $_POST['sign_up_date'] ?>">
        <label for="usermail">Email: </label><br />
            <input type="email" name="usermail" placeholder="yourname@email.com" required><br />
        <label for="password">Password: </label><br />
            <input type="password" name="password" placeholder="password" required><br />
            <input type="submit" value="Login">
    </form>
    </section>

用户名:


捕获中间变量基本上是没有意义的,您可以直接绑定
$\u POST
变量,但除此之外,这就是您使用
mysqli
的方式。这对于生产质量的工作来说有点粗糙,看到像“绑定失败”这样的事情对用户没有任何帮助,但这是可以改进的

有两件事可以真正改善这一点:

  • 使用ORM之类的或来抽象数据库调用,并在视图中保留大量低级数据库内容
  • 使用a使您的应用程序更加标准化、可维护,并打开一个巨大的社区代码库,可以无缝地插入

捕获中间变量基本上是没有意义的,您可以直接绑定
$\u POST
变量,但除此之外,这就是您使用
mysqli
的方式。这对于生产质量的工作来说有点粗糙,看到像“绑定失败”这样的事情对用户没有任何帮助,但这是可以改进的

有两件事可以真正改善这一点:

  • 使用ORM之类的或来抽象数据库调用,并在视图中保留大量低级数据库内容
  • 使用a使您的应用程序更加标准化、可维护,并打开一个巨大的社区代码库,可以无缝地插入

捕获中间变量基本上是没有意义的,您可以直接绑定
$\u POST
变量,但除此之外,这就是您使用
mysqli
的方式。这对于生产质量的工作来说有点粗糙,看到像“绑定失败”这样的事情对用户没有任何帮助,但这是可以改进的

有两件事可以真正改善这一点:

  • 使用ORM之类的或来抽象数据库调用,并在视图中保留大量低级数据库内容
  • 使用a使您的应用程序更加标准化、可维护,并打开一个巨大的社区代码库,可以无缝地插入

捕获中间变量基本上是没有意义的,您可以直接绑定
$\u POST
变量,但除此之外,这就是您使用
mysqli
的方式。这对于生产质量的工作来说有点粗糙,看到像“绑定失败”这样的事情对用户没有任何帮助,但这是可以改进的

有两件事可以真正改善这一点:

  • 使用ORM之类的或来抽象数据库调用,并在视图中保留大量低级数据库内容
  • 使用a使您的应用程序更加标准化、可维护,并打开一个巨大的社区代码库,可以无缝地插入

这取决于你对“权利”的定义

尽管许多准备好的语句示例显示了这种基本上直接将输入数据插入准备好的语句的方法(这就是您正在做的,只需要额外的步骤将数据分配给新的变量名),如果我之前没有验证所有必需的输入,我个人甚至不会开始在数据库上准备语句的任务。例如,即使没有向脚本传递POST数据,代码也将执行。当然,这是不可取的行为

至少,您应该检查
!在您的POST值上清空()。我还建议使用以下方法验证电子邮件地址格式:

$email = filter_input(INPUT_POST, 'usermail', FILTER_VALIDATE_EMAIL);
if (false === $email) {
    // validation failed
}

您可能也有关于
username
的要求(如无空格、X个最大字符数等),您应该根据这些要求进行验证(至少,我会验证字符串长度不超过数据库中字段的大小)。

这取决于您对“右”的定义

尽管许多准备好的语句示例显示了这种基本上直接将输入数据插入准备好的语句的方法(这就是您正在做的,只需要额外的步骤将数据分配给新的变量名),如果我之前没有验证所有必需的输入,我个人甚至不会开始在数据库上准备语句的任务。例如,即使没有向脚本传递POST数据,代码也将执行。当然,这是不可取的行为

至少,您应该检查
!在您的POST值上清空()。我还建议使用以下方法验证电子邮件地址格式:

$email = filter_input(INPUT_POST, 'usermail', FILTER_VALIDATE_EMAIL);
if (false === $email) {
    // validation failed
}

您可能也有关于
username
的要求(如无空格、X个最大字符数等),您应该根据这些要求进行验证(至少,我会验证字符串长度不超过数据库中字段的大小)。

这取决于您对“右”的定义

尽管许多准备好的语句示例显示了这种基本上直接将输入数据插入准备好的语句的方法(这就是您正在做的,只需要额外的步骤将数据分配给新的变量名),如果我之前没有验证所有必需的输入,我个人甚至不会开始在数据库上准备语句的任务。例如,即使没有向脚本传递POST数据,代码也将执行。当然,这是不可取的行为

至少,您应该检查
!在您的POST值上清空()。我还建议使用以下方法验证电子邮件地址格式:

$email = filter_input(INPUT_POST, 'usermail', FILTER_VALIDATE_EMAIL);
if (false === $email) {
    // validation failed
}

您可能也有关于
username
的要求(如无空格、X个最大字符数等),您应该根据这些要求进行验证(至少,我会验证字符串长度不超过数据库中字段的大小)。

这取决于您的定义