使用JS/JQuery修改PHP以与MySQL通信
Modifying PHP using JS/JQuery to communicate with MySQL
所以我的目标是允许页面上的动态元素来确定发送到数据库的SQL。
第一个比特是JS,它包含在我的主要HTML文档中:
var sub_condition = " AND artist=''ivoilic'' ";//$(".current_filter").attr("condition");
$("<?php $conditions = 'WHERE owner=''ivoilic''"+ sub_condition+"'; include 'PHP/get_info.php';?>").appendTo(".collection tbody");
上面包含的文档get_info.php如下所示:
<?php
include "connect.inc.php";
parse_str($conditions,$test);
$info = mysql_query("SELECT * FROM cards ".$condition.";")or die(mysql_error());?>
我的问题是,当我只是回显SQL时,它看起来很好,而当我手动测试SQL时,却能正常工作。但无论出于什么原因,当我尝试使用这种方法插入SQL的末尾时,都没有任何效果。有人有什么想法吗?
我试图向您展示正确的方向:
第一个
想想你想在mysql中做什么。谷歌为mysql注入。如果您将mysql查询从客户端(浏览器)带到服务器,每个人都可以将其更改为类似drop database
的内容,相信我——您不希望有人丢弃您的数据库;)
第二次
看看这个PHP数据库访问。这是用PDO完成的。PDO是一个防止mysql注入的PHP类,稍后在许多其他情况下也会对您有所帮助。
<?php
$id = $_GET['id'];
$ownerName = $_GET['ownerName'];
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
$query = $db->prepare('SELECT * FROM `cards` WHERE `id` = :ID AND `owner` = :OWNER');
$query->execute(array(
':ID' => $id,
':OWNER' => $owner
));
$result = $query->fetchAll(); //$result is now an array of search result objects
您可以看到,您只是通过javascript向php脚本发送值。当然,您可以在php脚本中有几个查询字符串,并且可能会得到一个带有特殊查询ID和开关的字符串?由你决定。
示例:
<?php
$queryNum = (int)$_GET['queryNum'];
$value1 = $_GET['val1'];
$value2 = $_GET['val2'];
switch($queryNum){
case 1:
$query = 'SELECT * FROM `cards` WHERE `id` = :ID AND `owner` = :OWNER';
$queryVals = array(':ID' => $value1, ':OWNER' => $value2);
break;
case 2:
$query = 'SELECT * FROM `cards` WHERE `color` = :COLOR AND `size` = :SIZE';
$queryVals = array(':COLOR' => $value1, ':SIZE' => $value2);
break;
default:
$query = 'SELECT * FROM `cards`';
$queryVals = array();
break;
};
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
$query = $db->prepare($query);
$query->execute($queryVals);
$result = $query->fetchAll(); //$result is now an array of search result objects
第三次
只将数据库查询的值从javascript或HTML表单发送到php脚本。
摘要
这是非常基础的知识,我的脚本示例只是简单的示例,可以向您指明正确的方向。永远不要忘记防止用户以任何方式更改数据库查询或php代码的可能性!
相关文章:
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- Mongodb$in以与数组中相同的顺序获取结果
- 将Laravel5.0中的谷歌图表与mysql数据库中的数据集成
- Node.js REST与MySQL句柄重新连接
- 如何自动填充输入文本框值以与名称相同
- Javascript 倒数计时器 - 客户端时间与 mySQL 时间
- ng-更改以与以前的值进行比较
- 选择“第一个下拉列表”以与另一个下拉列表的值相同
- 我正在尝试将vaues从ajax发送到wcf,以插入mysql表中
- 在Javascript中以与在PHP中相同的方式存储时间
- 从getTime()类型的日期获取日期和时间,以显示mySQL数据库中的日期
- 使用JS/JQuery修改PHP以与MySQL通信
- 使用php解析xml并将其转换为json以与$.ajax一起使用时遇到问题
- 如何使用jQuery以与多选框中相同的顺序检索多选框中所有选定和未选定的元素
- PHP是否以与JavaScript相同的方式解释代码
- 注册表格使用Javascript和Php与MySql数据库
- 如何重写Jasmine 2.0自定义匹配器以与Angular 1.5一起使用
- 当使用AJAX获取PHP文件以从MySQL数据库中检索数据时,会出现下拉表单disapering
- 为什么AMD以与javascript性质相反的顺序定义其可选参数
- 无法获取基础菜单以与 reactJS 一起使用