sql 查询因变量失败
sql query fails with variable
我是 PHP 的新手,我确信我遗漏了一个基本细节。当我在 SSMS 中执行此查询时,它工作正常。如果我在 PHP.
中完全像这样输入它,它也会起作用
但是在我的代码中,如果我使用变量 $barcodevar
而不是静态值 'x'
。查询停止工作。
这是我的代码:
<html>
<input class="input" type="text" name="uid"><br>
<input type="submit" name="submit" value="Submit">
<?php
if(isset($_POST['submit'])){
}
$barcodevar = $_POST['uid'];
$serverName = "butterserver";
$connectionInfo = array("Database"=>"flowers", "UID"=>"buttercup", "PWD"=>"Admin123");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if($conn){
if($barcodevar == ""){
echo "field is empty" ;
}
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = $barcodevar";
$stmt = sqlsrv_query( $conn, $sql);
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $row['SupplierLotID']."<br />";
}
sqlsrv_free_stmt( $stmt );
sqlsrv_close( $conn );
}
else{
echo "no connection";
}
?>
</html
回显后$barcodevar
我可以看到我在“uid”中输入的值与图片查询中使用的值相同。
我找不到任何错误,所以我不知道问题出在哪里。如果有任何我应该提供的更多信息请询问,我希望我们能解决这个问题。
谢谢。
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = '$barcodevar'";
就像您在 SSMS 中尝试的示例一样,ID 值在单引号内。您也必须对 php 变量执行相同的操作。
请记住,您的代码确实对 sql 注入开放。如果您不想将来出现任何问题,请尝试使用准备好的语句。阅读更多相关信息 here
在单引号之间包含变量 $barcodevar。
替换为:
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = $barcodevar";
与:
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = '$barcodevar'";
我是 PHP 的新手,我确信我遗漏了一个基本细节。当我在 SSMS 中执行此查询时,它工作正常。如果我在 PHP.
中完全像这样输入它,它也会起作用但是在我的代码中,如果我使用变量 $barcodevar
而不是静态值 'x'
。查询停止工作。
这是我的代码:
<html>
<input class="input" type="text" name="uid"><br>
<input type="submit" name="submit" value="Submit">
<?php
if(isset($_POST['submit'])){
}
$barcodevar = $_POST['uid'];
$serverName = "butterserver";
$connectionInfo = array("Database"=>"flowers", "UID"=>"buttercup", "PWD"=>"Admin123");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if($conn){
if($barcodevar == ""){
echo "field is empty" ;
}
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = $barcodevar";
$stmt = sqlsrv_query( $conn, $sql);
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $row['SupplierLotID']."<br />";
}
sqlsrv_free_stmt( $stmt );
sqlsrv_close( $conn );
}
else{
echo "no connection";
}
?>
</html
回显后$barcodevar
我可以看到我在“uid”中输入的值与图片查询中使用的值相同。
我找不到任何错误,所以我不知道问题出在哪里。如果有任何我应该提供的更多信息请询问,我希望我们能解决这个问题。
谢谢。
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = '$barcodevar'";
就像您在 SSMS 中尝试的示例一样,ID 值在单引号内。您也必须对 php 变量执行相同的操作。
请记住,您的代码确实对 sql 注入开放。如果您不想将来出现任何问题,请尝试使用准备好的语句。阅读更多相关信息 here
在单引号之间包含变量 $barcodevar。
替换为:
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = $barcodevar";
与:
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = '$barcodevar'";