转义进入 MySQL 的大量字符

  • 本文关键字:字符 MySQL 转义 php mysqli
  • 更新时间 :
  • 英文 :


我有一个HTML表单,用户可以在其中输入SQL查询。

查询需要输入到我的 MYSql 数据库的字段中。但对于包含 % _ 、 ;'" <>美元等... 它失败了。

我将如何正确将此信息输入数据库?

我知道以下方法不是很安全的方法,目前,我只需要它来工作:)

// Get values from form 
$username = $_SESSION['user']; 
$appname = $_POST['appname'];
$sql2 = $_POST['sql'];

// Insert data into mysql 
$sqlquery="INSERT INTO puresql (username,appnm, query)VALUES('$username','$appname', '$sql2')";
$result=mysqli_query($dbconn,$sqlquery);

对于有此问题的其他任何人。 下面有效,使用 mysqli_real_escape_string

$date = date("Y/m/d");
echo "$date";
$appname = mysqli_real_escape_string($dbconn, $_POST['appname']);
$sql2 = mysqli_real_escape_string($dbconn, $_POST['sql']);
$username = mysqli_real_escape_string($dbconn, $_SESSION['user']);
// Insert data into mysql 
$sqlquery="INSERT INTO livepurespark (username,appnm, query, date)VALUES('$username','$appname', '$sql2', '$date')";
$result=mysqli_query($dbconn,$sqlquery);
另一种在

数据库字段中保存复杂文本的方法具有 SQL 注入保护的额外好处是使用参数化查询语句(预准备语句(。

$username = $_SESSION['user']; 
$appname = $_POST['appname'];
$sql2 = $_POST['sql'];
$stmt = mysqli_prepare($dbconn, "INSERT INTO puresql (username,appnm, query)VALUES('?','?','?')");
mysqli_stmt_bind_param($stmt, "sss", $username, $appname, $sql2);
mysqli_stmt_execute($stmt);

最新更新