Javascript 选择。。。从…起Ajax在哪里
考虑到以下几点,我试图构建一个从Javascript 选择。。。从…起Ajax在哪里,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,考虑到以下几点,我试图构建一个从Ajax到PHP/MySQL的定制查询 Javascript代码: var i=2; fetchFromDBPHP("name", "tblperson", "id="+i); function fetchFromDBPHP(column, table, condition) { $.ajax({ type: "post", url: "./php/fetchFromDB.php", dataTyp
Ajax
到PHP/MySQL
的定制查询
Javascript代码:
var i=2;
fetchFromDBPHP("name", "tblperson", "id="+i);
function fetchFromDBPHP(column, table, condition) {
$.ajax({
type: "post",
url: "./php/fetchFromDB.php",
dataType: 'json',
data: { column: column, table: table, condition: condition },
success: function(data) {
console.log("Fetched data from PHP:" + data);
},
error:function(request, status, error) {
console.log("Reading PHP database went wrong. Error " + request.responseText);
}
});
}
<?php
$column = $_POST['column'];
$table = $_POST['table'];
$condition = $_POST['condition'];
if (isset($table)) {
$sql = "SELECT " . intval($_POST['column']) . " FROM " . intval($_POST['table']) . " WHERE " . intval($_POST['condition']);
$con = mysqli_connect("localhost", "root", "bloh", "blah");
if (!$con) {
die("Connection failed: " . mysqli_error($con));
}
$result = mysqli_query($con, $sql);
$to_encode = array();
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
$to_encode[] = $row;
}
echo json_encode($to_encode);
mysqli_close($con);
}
?>
id name firstname tel
1 Dalton Jack 555-5555
2 Smith John 555-6666
3 Doe John 555-7777
PHP代码:
var i=2;
fetchFromDBPHP("name", "tblperson", "id="+i);
function fetchFromDBPHP(column, table, condition) {
$.ajax({
type: "post",
url: "./php/fetchFromDB.php",
dataType: 'json',
data: { column: column, table: table, condition: condition },
success: function(data) {
console.log("Fetched data from PHP:" + data);
},
error:function(request, status, error) {
console.log("Reading PHP database went wrong. Error " + request.responseText);
}
});
}
<?php
$column = $_POST['column'];
$table = $_POST['table'];
$condition = $_POST['condition'];
if (isset($table)) {
$sql = "SELECT " . intval($_POST['column']) . " FROM " . intval($_POST['table']) . " WHERE " . intval($_POST['condition']);
$con = mysqli_connect("localhost", "root", "bloh", "blah");
if (!$con) {
die("Connection failed: " . mysqli_error($con));
}
$result = mysqli_query($con, $sql);
$to_encode = array();
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
$to_encode[] = $row;
}
echo json_encode($to_encode);
mysqli_close($con);
}
?>
id name firstname tel
1 Dalton Jack 555-5555
2 Smith John 555-6666
3 Doe John 555-7777
我想做的是发送一个类似于
SELECT something FROM mytable WHERE condition=that
使用Ajax。
我收到一条错误消息,但未检索到任何内容 删除
intVal
它向0
生成单词:检查此项
还要确保条件中的字符串类型值,比如列address
fetchFromDBPHP("name", "tblperson", "id='"+address+"'");
使用引号”
,这样它就可以像查询一样正确,或者像这样在php中创建一个条件
$condition = explode("=",$condition);
if(!is_numeric($condition[1])){
$condition[1] = "'".$condition[1]."'";
}
$condition = implode("=",$condition);
Demo:,这样进行查询
SELECT something FROM mytable WHERE condition='that'
您可以使用上述代码作为第一步,不要在生产中使用,再进行一步使其参数化,或者使用
pdo
删除intVal
它将单词转换为0
:检查此项
还要确保条件中的字符串类型值,比如列address
fetchFromDBPHP("name", "tblperson", "id='"+address+"'");
使用引号”
,这样它就可以像查询一样正确,或者像这样在php中创建一个条件
$condition = explode("=",$condition);
if(!is_numeric($condition[1])){
$condition[1] = "'".$condition[1]."'";
}
$condition = implode("=",$condition);
Demo:,这样进行查询
SELECT something FROM mytable WHERE condition='that'
您可以使用上述代码作为第一步,不要在生产中使用,再做一步使其参数化
,或者使用pdo
,多亏了“user2486”,我的代码错了。正确的用途是:
fetchFromDBPHP("name", "tblperson", "id='"+address+"'");
但是,我也同意“Quentin”的观点,他的代码的其余部分很容易受到SQL注入攻击 多亏了“user2486”,我的代码错了。正确的用途是:
fetchFromDBPHP("name", "tblperson", "id='"+address+"'");
但是,我也同意“Quentin”的观点,他的代码的其余部分很容易受到SQL注入攻击 为什么要使用
intval()
?我尝试不使用,但仍有错误消息。我同意,这是不需要的。您检查过网络选项卡吗?不确定“网络选项卡”是什么意思……这是浏览器中的网络选项卡,按F12打开:为什么要使用intval()
?我尝试过没有,但仍然有错误消息。我同意,这是不需要的。你检查过你的网络选项卡吗?不确定你所说的“网络选项卡”是什么意思……这是浏览器中的网络选项卡,按F12打开:危险!不要使用此代码!:你需要从自己身上得到的东西很容易受到伤害。@Quentin:我完全同意你的看法。我已经更新并在最后添加了一个注释,以使用参数化
或pdo
。或者我应该删除这个答案吗?如果答案是“您使用的是一种SQL注入防御形式,专门用于输入应该是数字但您的输入不是数字的情况下”然后,我建议要么按照正确的方式进行保护,要么投票结束引用SQL注入问题的副本,并对问题做出评论,即选择了错误的方法。危险!不要使用此代码!:你需要从自己身上得到的东西很容易受到伤害。@Quentin:我完全同意你的看法。我已经更新并在最后添加了一个注释,以使用参数化
或pdo
。或者我应该删除这个答案吗?如果答案是“您使用的是一种SQL注入防御形式,专门用于输入应该是数字但您的输入不是数字的情况下”然后,我建议要么按照正确的方式进行保护,要么投票结束引用SQL注入问题的副本,并对问题做出评论,即选择了错误的方法。