簡體   English   中英

查詢適用於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';
    }

我知道我對SQL注入有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: http : //php.net/manual/zh/book.pdo.php

您在表名和列名兩邊加上了錯誤的引號。 嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM