php - 通过 Javascript 传递 MySQL 查询

标签 php javascript jquery mysql post

在 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\' LIMIT 10' 附近使用的正确语法

这里可能有什么问题?我猜它与传递查询时的字符编码有关,但似乎没有弄对。

最佳答案

在任何情况下都不应这样做。您应该传递可用于构建正确查询的参数。

至少做这样的事情....

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 .

关于php - 通过 Javascript 传递 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880531/

相关文章:

javascript - 使用 Vue.js 设置一个复选框

javascript - Jquery 简单 ajax - 插入 html

PHP无法读取具有读取权限的文件

javascript - 如何将 2 个 flex block 与 HTML 和 CSS 分开?

javascript - DOM 查找 ID 返回未定义

javascript - 在 Bootstrap 中更改表单样式以进行验证

javascript - 将第 3 方 JS 文件导入 Angular 组件

php - 如何使用 Laravel 的 url 生成器助手生成一个带有不在末尾的参数的 url?

php - 如何在 symfony2 的独白日志记录中定义 channel 和级别

php - MySQL SELECT 3 随机和一个静态行