我是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”中键入的值与图片查询中使用的值相同。
我找不到任何错误,所以我不知道问题出在哪里。如果我需要提供更多信息,请询问,希望我们可以解决。
谢谢。
答案 0 :(得分:1)
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = '$barcodevar'";
就像在您在SSMS中尝试过的示例一样,ID值位于单引号内。您也必须对您的php变量执行相同的操作。
请记住,您的代码确实可以进行sql注入。如果您不想将来遇到任何问题,请尝试使用准备好的语句。进一步了解here
答案 1 :(得分:1)
在单引号之间包含变量$ barcodevar。
替换此:
gq_article
使用:
$sql = "SELECT SupplierLotID FROM FactsLot WHERE ID = $barcodevar";