php - 在 SQL 查询中使用变量(不是用户输入的)

标签 php mysql database

我正在尝试对数据库中不同表的多个字段进行 json 编码。下面是我的代码。我目前正在使用一个数组来表示我的表的名称($tablename)。我读过有关 SQL 注入(inject)的内容,但它们似乎特别关注用户输入。但是,在这种情况下,用户与我的数据库没有交互。这是我的应用程序的后端。对于使用这样的变量名有什么想法吗?谢谢

我还研究了准备语句,但以我想要的形式获取数据非常困难。

<?php   

 include $_SERVER['DOCUMENT_ROOT'] . '/mmcv/buildchartInfo.php';

    $position = 0;
    $results = array();

    foreach($chartnames as $tablename) {

        print $tablename."<br />";

        encodejson($tablename);  


    }

    function encodejson($tablename){


    include $_SERVER['DOCUMENT_ROOT'] . '/mmcv/includes/connect.inc.php';

    $sql="SELECT rank, name FROM $tablename";


    $result = mysqli_query($connection,$sql);

    //Error when data isn't returned
    if(!$result)
    {
        $output = "error getting data";
        echo $output;
        //$GLOBALS['loginError'] = "error getting log in data";
        exit();
    }


    while($row=mysqli_fetch_assoc($result)) $output[]=$row;

    print(json_encode($output));

    }

     mysqli_close($connection);

   ?>

最佳答案

只要用户无法更改$tablename的值,那么你就没有什么好害怕的。

关于php - 在 SQL 查询中使用变量(不是用户输入的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14855613/

相关文章:

php - laravel mongodb 关闭客户端连接 剩余数据太小

php - 如何根据时区设置WP Cron作业时间戳?

mysql - 为什么我不能在 WHERE 中使用我的列,而我可以在 GROUP BY 中使用?

database - WordPress:site_id 和 blog_id 之间的区别?

sql - 索引 bool 字段

mysql - 测验数据库设计

php - 显示 cookie 开始时间

php - Symfony 2 中 Zend\Validate\Db\NoRecordExists 的模拟

php - 从具有总成本的两个表中选择全部

mysql - Wordpress - ftp 站点/导出数据库到本地主机,本地主机图像仍然指向 .com,为什么?