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


query works in sql, not in php

我有这个查询,我可以对我的数据库运行,它工作得很好。然而,当我在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';
    }

我知道我有0保护防止SQL注入,我只是想拉数据,这是在没有办法活了。无论如何,我每次都会得到"失败"的回应。谢谢你的帮助。

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

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

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

必须用'替换'表名和列名。’只是为了值。试试这个:

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

请避免使用*并重新考虑您的安全策略。如前所述,请查看PDO: http://php.net/manual/en/book.pdo.php

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

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