我正在尝试允许用户(在我的工作地点)运行查询,如果他们选择,将其保存到数据库中,以便他们可以稍后再次单击运行它(就像他们正在更新一样)一个数据库)。不过,我遇到了这个问题。只是运行查询不是问题,但查询无法正确保存。查询是这样的:
LOAD DATA INFILE 'path/to/file/file.txt' INTO TABLE table FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
如果我在输入查询时转义反斜杠,我可以正确地保存到数据库中,但这会导致查询在提交时运行不正确。我想知道是否有一种方法可以自动逃避反斜杠。或者将两个功能分开会更容易/更好吗?如果需要更多信息,请告诉我,并提前感谢。
答案 0 :(得分:1)
我做了一些修补,我明白了。这是我提出的解决方案:
首先,我在更新时使用了str_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_multi_query
(因为有时在提交中有多个查询导致它失败)来运行用户输入的查询。
$query = mysqli_multi_query($con, $q);
感谢所有提出建议的人!
答案 1 :(得分:0)
在使用之前,您必须先取消查询
创建一个专门用于运行数据库查询的方法,例如" myClass->unescapeAndExecute($escapedQueryFromDb);"