php - 查询在 sql 中有效,在 php 中无效

标签 php mysql sql

我有这个查询,我可以针对我的数据库运行它,它工作正常。但是,当我在 PHP 版本中尝试时,我得到 0 个结果。我缺少一些基本的东西,我只是不知道它是什么。

查询

SELECT * 
FROM table_admin_20
WHERE column1 =  '0607'

PHP

$store_info_query = "SELECT * FROM '".$table_name."' WHERE 'column1' = '".$store_number."'";

if ($query_run = mysql_query($store_info_query)) {
    if (mysql_num_rows($query_run) == NULL) {
        $response["success"] = 0;          
        echo json_encode($response);
        echo 'nope';
    } else {
        while ($row = mysql_fetch_assoc($query_run)) {
            $store_info = $row['column1'];
            echo '1111111';
            echo $store_info;           
        }       
    } 
} else {
    echo 'fail';
    }

我知道我对 SQL 注入(inject)的保护为 0,我只是想提取数据,这还没有实现。无论如何,我每次都会得到“失败”的回应。谢谢你的帮助。

最佳答案

不要事后才添加安全性,只需切换到 PDO 或 mysqli 并使用准备好的语句,这样您就不必再担心这些值了。如果是表名或列名,则需要使用白名单。

问题的原因是您引用了表名和字段名。如果您需要转义它们,请使用反引号:

$store_info_query = "SELECT * FROM `".$table_name."` WHERE `column1` = '".$store_number."'";

关于php - 查询在 sql 中有效,在 php 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157660/

相关文章:

php - 页面重新加载时标题中随机出现中断

php - preg_replace PHP 和

php - 通过 PHP 的 exec 在 Linux Web 服务器上执行二进制文件

PHP/MySQL : mysqli prepared statement insert same value multiple times within for loop

mysql - 将修剪功能添加到现有的sql查询中

mysql - 通过算术运算检索TOP 10数据

mysql - Codeigniter 何时从 MYSQL DB 检索数据

sql - 嵌套查询: best practices

.net - 如何在Linq to SQL中实现缓存?

sql - CONTAINSTABLE 通配符在短语匹配上失败?