Php MySQL认为“2015123”不同于“02015123”

Php MySQL认为“2015123”不同于“02015123”,php,mysql,sql,zerofill,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);

我试图从数据库中选择一列,其中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'];
        }
    }
我知道代码是正确的,但是,在签入DB时,stockid相当于“2015123”,但此页面中发布的代码$stockid是“02015123”。这就是为什么它什么也不返回


是否有任何代码/方法强制sql将它们视为相同/相等?非常感谢您的帮助。

您可以修剪前导的0个零以检查stockId

SELECT TRIM(LEADING '0' FROM '02454545') 
您的命令应该是:

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

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

SELECT TRIM(LEADING '0' FROM '02454545') 
您的命令应该是:

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

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

SELECT TRIM(LEADING '0' FROM '02454545') 
您的命令应该是:

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

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

SELECT TRIM(LEADING '0' FROM '02454545') 
您的命令应该是:

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

您正在以字符串形式传递stockid,但希望它的行为类似于整数。 试一试


这也保护了代码的安全性,以防止SQL注入

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


这也保护了代码的安全性,以防止SQL注入

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


这也保护了代码的安全性,以防止SQL注入

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




这也保护了代码的安全性,以防止非peri.stockid列的SQL注入数据类型?请提及非peri.stockid列的数据库结构数据类型?请提及非peri.stockid列的数据库结构数据类型?请提及非peri.stockid列的数据库结构数据类型?请提及数据库结构你好,Aman Aggarwal,谢谢你的评论。如果数据库中的所有数据都不是以“0”开头,但其中某些数据上有“0”,则此操作有效。请从DB.nonperi中选择*其中nonperi.stockid=trimpleading“0”来自“$stockid”或nonperi.stockid=“$stockid”@哈比卜·乌尔·哈克,我没想到索尔·恩,你那了不起的人!谢谢你们两个!你好,Aman Aggarwal,谢谢你的评论。如果数据库中的所有数据都不是以“0”开头,但其中某些数据上有“0”,则此操作有效。请从DB.nonperi中选择*其中nonperi.stockid=trimpleading“0”来自“$stockid”或nonperi.stockid=“$stockid”@哈比卜·乌尔·哈克,我没想到索尔·恩,你那了不起的人!谢谢你们两个!你好,Aman Aggarwal,谢谢你的评论。如果数据库中的所有数据都不是以“0”开头,但其中某些数据上有“0”,则此操作有效。请从DB.nonperi中选择*其中nonperi.stockid=trimpleading“0”来自“$stockid”或nonperi.stockid=“$stockid”@哈比卜·乌尔·哈克,我没想到索尔·恩,你那了不起的人!谢谢你们两个!你好,Aman Aggarwal,谢谢你的评论。如果数据库中的所有数据都不是以“0”开头,但其中某些数据上有“0”,则此操作有效。请从DB.nonperi中选择*其中nonperi.stockid=trimpleading“0”来自“$stockid”或nonperi.stockid=“$stockid”@哈比卜·乌尔·哈克,我没想到索尔·恩,你那了不起的人!谢谢你们两个!那么,有人能为一个好的答案投两张弃权票,并给出很好的切中要害的解释吗?你好,尼泰克,非常感谢!这对我来说是完美的,也是下面habib-ul-haq的解决方案,SOF成员真的很棒!你们真是天才!请让我做你的徒弟:我认为我的案子不需要intval,因为stockid是从使用标签的表格中发布的,而不是,但我仍然使用你的sol'n用于将来的用途:D再次感谢。出于安全原因,这是必要的,因为人们可以以其他方式将SQL语句注入到您的系统中——我很确定您不希望这样;那么,有人能为一个好的答案投两张弃权票,并给出很好的切中要害的解释吗?你好,尼泰克,非常感谢!这对我来说是完美的,也是下面habib-ul-haq的解决方案,SOF成员真的很棒!你们真是天才!请让我做你的徒弟:我认为我的案子不需要intval,因为stockid是从使用标签的表格中发布的,而不是,但我仍然使用你的sol'n用于将来的用途:D再次感谢。出于安全原因,这是必要的,因为人们可以以其他方式将SQL语句注入到您的系统中——我很确定您不希望这样;那么,有人能为一个好的答案投两张弃权票,并给出很好的切中要害的解释吗?你好,尼泰克,非常感谢!这对我来说是完美的,也是下面habib-ul-haq的解决方案,SOF成员真的很棒!你们真是天才!请让我做你的徒弟:我认为我的案子不需要intval,因为stockid是从使用标签的表格中发布的,而不是,但我仍然使用你的sol'n用于将来的用途:D再次感谢。出于安全原因,这是必要的,因为人们可以以其他方式将SQL语句注入到您的系统中——我很确定您不希望这样;那么,有人能为一个好的答案投两张弃权票,并给出很好的切中要害的解释吗?你好,尼泰克,非常感谢!这一个有效
完美地为我,也是解决哈比卜乌尔哈克下面,SOF成员真的岩石!你们真是天才!请让我做你的徒弟:我认为我的案子不需要intval,因为stockid是从使用标签的表格中发布的,而不是,但我仍然使用你的sol'n用于将来的用途:D再次感谢。出于安全原因,这是必要的,因为人们可以以其他方式将SQL语句注入到您的系统中——我很确定您不希望这样;