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)
您必须使用引号插入字符串值
$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阅读不错的教程
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |