MySQL 认为“2015123”与“02015123”不同

MySQL thinks that '2015123' is different from '02015123'

我正在尝试 select 我的数据库中的一列,其中 stockid 等于用户输入的 stockid。这是我的代码:

    $stockid = $_POST['item'];

    //get the current balance of the selected item
    $sqlbal = "SELECT * FROM db.nonperi where nonperi.stockid = '$stockid'";
    $resultbal = $conn-> query($sqlbal);
    if ($resultbal-> num_rows > 0)
    {
        while ($row = $resultbal -> fetch_assoc()) 
        {
            $currbal = $row['bal'];
        }
    }

我知道代码是正确的,但是,在数据库中检查时,stockid 相当于 '2015123' 但是在此页面中发布的 $stockid代码是 '02015123'。这就是为什么它 returns 什么都没有。

有没有code/way强制sql将他们视为same/equal?感谢您对此提供的任何帮助。

您可以trim前导 0(零)来检查 stockId。

SELECT TRIM(LEADING '0' FROM '02454545') 

你的命令应该是:

"SELECT * FROM db.nonperi where nonperi.stockid = TRIM(LEADING '0' FROM '$stockid')";

您将 stockid 作为字符串传递(但希望它表现得像整数)。 尝试

$stockid = intval($_POST['item']);
$sqlbal = "SELECT * FROM db.nonperi where nonperi.stockid = $stockid";

(这也可以保护您的代码以防止 SQL 注入)