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”安全的。