Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择。。。从…起Ajax在哪里_Javascript_Php_Mysql_Ajax - Fatal编程技术网

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注入问题的副本,并对问题做出评论,即选择了错误的方法。