使用 SQL 在表中输入精确值

W. *_* G. 2 mysql php

我需要将特定值插入到我正在使用 SQL 处理的表中(请参阅下面的函数):

INSERT INTO *Table Name* (...) VALUES(...); 
Run Code Online (Sandbox Code Playgroud)

将要存储在这个表中的值是涉及另一种编程语言的值,这些语言有很多奇怪的符号,包括单个反斜杠、*、美元符号等。

如何准确插入该表中的值?

例如,当我输入 '\2' 时,它需要在表中返回 \2 而不是 2。我无法手动输入两个反斜杠来获取 \2。这是因为我通过 HTML 接收来自另一个用户的输入并使用 PHP 将其发送到我的表。我遇到的问题是,这些 SQL 中的特殊字符正在被输入,这不是我希望它们作为值的方式。

有没有办法用预先调用的某个字符串函数准确地键入这些值?这样做的其他方法将不胜感激!

数据库的附加信息:

  • 服务器:本地主机通过 UNIX 套接字

    服务器类型:MySQL

    服务器连接:未使用 SSL 文档

    服务器版本:5.6.49-cll-lve - MySQL 社区服务器 (GPL)


潜在答案:$mysqli 是否定义如下?(我称之为 $db。) $mysqli=mysqli_connect(...);

因此,该文字添加如下:

$query = "INSERT INTO Table (C1, ... Cn) VALUES('$C1', ... '$Cn')"; 
$stmt = $mysqli->prepare($query);
$stmt->bind_param("ss", $C1, ..., $Cn);
$stmt->execute();
mysqli_query($db, $query);
Run Code Online (Sandbox Code Playgroud)

sti*_*bit 6

不过千万不能使用字符串插值或连接来获得值到PHP中的SQL查询。这很容易出错,并且可能会使您的程序容易受到 SQL 注入攻击。

使用参数化查询。请参阅“如何在 MySQL 语句中包含 PHP 变量”“如何防止 PHP 中的 SQL 注入?” .

使用参数化查询还将确保数据以必要的方式自动转义。所以这也解决了你的问题。不需要手动转义。