MySQL认为'2015123'与'02015123'不同

时间:2015-06-18 06:47:04

标签: php mysql sql zerofill

我正在尝试从我的数据库中选择一个列,其中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'即可。这就是为什么它什么都不返回。

是否有任何代码/方法强制sql将它们视为相同/相等?我对此表示感谢。

2 个答案:

答案 0 :(得分:4)

您将stockid作为字符串传递(但希望它的行为类似于整数)。 尝试

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

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

答案 1 :(得分:-1)

您可以修剪前导0(零)以检查stockId。

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

你的命令应该是:

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