Php 将mysql查询保存到数据库中

Php 将mysql查询保存到数据库中,php,mysql,sql,Php,Mysql,Sql,我正在尝试允许用户(在我的工作场所)运行查询,如果他们选择,则将其保存到数据库中,以便稍后只需单击一下即可再次运行查询(就像他们正在更新数据库一样)。不过,我对此有点问题。简单地运行查询不是问题,但是查询没有正确保存。查询如下所示: LOAD DATA INFILE 'path/to/file/file.txt' INTO TABLE table FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; 如果在键入查询时不使用反斜杠,我可以将其正确

我正在尝试允许用户(在我的工作场所)运行查询,如果他们选择,则将其保存到数据库中,以便稍后只需单击一下即可再次运行查询(就像他们正在更新数据库一样)。不过,我对此有点问题。简单地运行查询不是问题,但是查询没有正确保存。查询如下所示:

LOAD DATA INFILE 'path/to/file/file.txt' INTO TABLE table FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

如果在键入查询时不使用反斜杠,我可以将其正确保存到数据库中,但这会导致在提交时查询运行不正确。我想知道是否有一种方法,我可以自动摆脱反斜杠。或者将这两个功能分开会更容易/更好吗?如果需要更多信息,请告诉我,并提前感谢

在使用查询之前,您必须取消对查询的扫描。

创建一个专用于从数据库运行查询的方法,如“
myClass->unescapeAndExecute($escapedQueryFromDb);”

我做了一些修补,得到了它。以下是我提出的解决方案:

首先,我在更新中使用了
str\u replace

$q = str_replace(array("\t", "\n"),array("\\t","\\n"), $_POST['update']);
然后,我按照建议准备了它

if($stmt = $con->prepare("insert into queries (Query_Name, Query, Description) values (?, ?, ?);")){
    $stmt->bind_param('sss', $qn, $q, $qd);
    $stmt->execute();
    $stmt->store_result();
    $stmt->close();
}
最后,我运行了一个
mysqli\u multi\u查询
(因为有时提交中有多个查询,这导致提交失败)来运行用户输入的查询

$query = mysqli_multi_query($con, $q);

感谢所有提出建议的人

当读回中的查询时,是否可以使用REPLACE-将\\更改为\?是否尝试使用准备好的语句?在这种情况下,您不需要转义数据。无论如何,如果您想在添加到数据库之前转义,那么在检索数据库时只需取消转义即可!您是否尝试过
mysqli\u real\u escape\u sting()
(或类似)或如上所述使用准备好的语句插入记录(从而完全避免了转义的需要)?我尝试过
mysqli\u real\u escape\u string()
。结果是:将数据填充'path/to/file/file.txt'加载到以\'\'行结尾的表字段中,以\'\n'行结尾;它保留了\n,但仍然会在存储文件之前\t将文件内容编码为“base64”(base64\u encode)base64_在显示时解码。注意:“base64编码”是“数据库”和“HTML”安全的。