通过Javascript传递MySQL查询
Passing MySQL query via Javascript
在Javascript函数中,我有以下JQuery,在其中我调用PHP脚本(即getDBData.PHP)来从查询中获取数据库数据:
$("#dbcontent").load("getDBData.php", {query: "SELECT * FROM `texts` WHERE name='John' LIMIT 10;"});
在getDBData中,我通过POST获取这个查询:
$query = $_POST['query'];
并将其作为mysql_query的输入:
$query = mysql_query($query) or die(mysql_error());
然而,我得到以下MySQL错误:
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1行"'''John'''LIMIT10'"附近使用的正确语法
这里可能出了什么问题?我想这与传递查询时的字符编码有关,但似乎没有正确处理。
在任何情况下都不应该这样做。您应该传递参数,然后这些参数可以用于构建正确的查询。
至少要做这样的事。。。。
Javascript
$.post('getDBData.php', {
query: 'getTextsByUser',
user: 'John'
});
PHP
$queries = array(
'getTextsByUser' => 'SELECT * FROM texts WHERE name = ?',
'getNewsById' => 'SELECT * FROM news WHERE id = ?'
);
$stmt = $dbConnection->prepare($queries[$_POST['query']);
$stmt->bind_param('s', $_POST['user']);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
}
然后通过ajax传递getUsers
以确定运行哪个查询。
注意:如果您刚刚开始这个项目,mysql_query()已经被弃用,您应该考虑切换到mysqli。
不要像其他人指出的那样这样做!Webnet的解决方案要好得多
但我相信我知道如何解决你最初的问题。我在解析JSON时也有过一次,并使用stripslashes()
解决了它。
$query = stripslashes($_POST['query']);
mysql_query($query);
正如许多人所说,这是非常危险的。然而,我认为失败的地方在于您需要使用URL编码来指定查询。看见http://en.wikipedia.org/wiki/Query_string#URL_encoding.这尤其适用于=
符号。
相关文章:
- 在node.js-mysql中执行UPDATE查询不起作用
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 浓缩一系列mySQL查询
- 如何翻译MySQL查询's ResultSet转换为整数
- 如何在mysql查询(NODE.js)中重复使用一个参数
- onclick->mysql查询->javascript;同一页
- 向更新mysql查询传递一个id
- 如何在下拉列表更改时自动填充mysql查询结果中的文本框值
- mysql查询一次在单个查询中的多个表中插入记录
- 添加行并运行多个mySQL查询
- 如何将mysql查询的结果获取到html文本框中
- 数组数据排序类似mysql查询
- 使用jquery显示mysql查询结果
- PHP MySQL 在一个页面和一个查询中插入具有多行的数据
- 在“onexit”或“onsubmit”之后,查询mysql并填充表单字段,而无需离开页面php js
- 使用下拉列表中的值查询 MySQL 数据库,然后使用结果填充文本字段而不刷新页面
- 通过JavaScript中的PHP查询MySQL,时间间隔
- Highcharts标签格式化器查询mysql
- 限制PHP查询mysql数据库的非空行
- 使用Node.JS查询MySQL,并在网页中显示结果