Mysql 插入查询在 php 文件中不起作用

Vik*_*ana -4 php mysql mysqli prepared-statement

我是 php 的新手,并试图将一些值插入到我的数据库表中,但是当我通过 php 变量传递值时,查询不起作用。相同的查询使用静态值。

我在 init.php 中建立我的数据库连接,其中的变量是 $dbc。

<?php
require "init.php";

$mobile = "100004";
$email = "vikas4@web";
$password = "4444"

$stmt = mysqli_prepare($dbc, "INSERT INTO user_login (user_mobile, user_email, user_pwd) values(?, ?, ?)";
mysqli_stmt_bind_param($stmt, "sss", $mobile, $email, $password);
echo "after sql_query";

?>
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,当我将 $sql_query 替换为以下静态代码时,它会插入到数据库中。

$sql_query = "INSERT INTO user_login (user_mobile, user_email, user_pwd) values('1000055', 'vikas55@web', '5555')"; 
Run Code Online (Sandbox Code Playgroud)

max*_*xhb 5

您必须使用引号插入字符串值

$sql_query = "INSERT INTO user_login (user_mobile, user_email, user_pwd) values('$mobile', '$email', '$password')";
Run Code Online (Sandbox Code Playgroud)

但即使这也不是一个好的解决方案,因为您很容易受到 sql 注入的影响。

使用准备好的语句来避免这些安全问题:

$stmt = mysqli_prepare($dbc, "INSERT INTO user_login (user_mobile, user_email, user_pwd) values(?, ?, ?)";
mysqli_stmt_bind_param($stmt, "sss", $mobile, $email, $password);
mysqli_stmt_execute($stmt);
Run Code Online (Sandbox Code Playgroud)

准备好的语句将处理安全所需的所有转义和引用封装。

如果您想深入研究该主题,您可以在http://www.w3schools.com/php/php_mysql_prepared_statements.asp阅读不错的教程