查询在sql中工作,而不是在php中

查询在sql中工作,而不是在php中,php,mysql,sql,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 = my

我有这个查询,我可以对我的数据库运行,它工作得很好。然而,当我在
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
injection有0个保护,我只是想拉取数据,但这还没有实现。不管怎样,每次我都会得到“失败”的回答。谢谢你的帮助

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

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

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

对于表名和列名,必须将“替换为”只是为了价值。试试这个:

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

请避免使用*并重新考虑您的安全策略。如前所述,看看PDO:

您在表名和列名周围使用了错误的引号。试试这个

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

为什么在php中引用表名和字段名,而在上面的查询中却没有这样做?顺便问一下,这可能是您的问题的原因…$store\u info\u查询显示了什么?也不要使用mysql,因为它们已被弃用
var\u dump($store\u number)
如果是607,则必须在其上保留pad“0”。回显$store\u info\u查询时会出现什么结果?看起来不一样,我想…你的朋友。(因为您已经在使用mysql_uu函数了)。谢谢您的建议。代码显然起了作用。我会尽快接受。我已经听过两次关于增加安全性作为“事后思考”的相同内容。我想了解更多关于PDO和mysqli的信息。你有任何推荐的图坦卡蒙的链接吗?还是我应该去看医生,试着用这种方式学习?@I_me_mine这并不难,如果你看看例子,你90%都在那里。你只需要在那之前打开一个PDO连接:哇,简单而有效。非常感谢你。您可能刚在我的数据库上线时保存了它。我几乎总是在做前端Android,所以这是我大学以来第一次真正体验PHP和SQL,学到了很多东西,因为有很多人喜欢你。@I_me_mine:)顺便说一句,当你开始想知道为什么你的异常没有被捕获时,看看这里:不使用
*
很好。使用它会使将来对模式的更改变得烦人,更不用说它更难判断代码在做什么。谢谢,我还没听说过不要使用*。为什么会这样?@i_me_mine:例如,检查一下。:-)