我正在尝试从我的数据库中选择一个列,其中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将它们视为相同/相等?我对此表示感谢。
答案 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')";