将mysql查询保存到数据库中

时间:2014-10-16 13:41:50

标签: php mysql sql

我正在尝试允许用户(在我的工作地点)运行查询,如果他们选择,将其保存到数据库中,以便他们可以稍后再次单击运行它(就像他们正在更新一样)一个数据库)。不过,我遇到了这个问题。只是运行查询不是问题,但查询无法正确保存。查询是这样的:

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

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

2 个答案:

答案 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);"