簡體   English   中英

在WHERE子句中使用變量

[英]Using a variable in the WHERE Clause

我是MySQL和PHP的新手。 我有一個HTML表單,我想將1變量從該變量傳遞到我的PHP代碼,然后在數據庫上運行查詢以獲取將變量保存在“序列”列下的記錄。 當我對要查找的“序列”進行硬編碼時,我可以很好地運行它,但是當我嘗試使用變量時,我得到了一個錯誤。

任何幫助將不勝感激! 或者是更好的方法。

這是我的錯誤: Unknown column 'amg002' in 'where clause'

這是我的代碼;

$serial= $_POST['Serial'];
echo $serial;

//Connect To Database

$link = mysql_connect($hostname,$username, $password) OR DIE ('Unable to connect to database! Please try again later.');
echo "Connected to MySQL<br />";

//Select the database - 'SiteInfo'

// Collects data from "SiteInfo" table

//****This is where I am running into the error*** 

$sql = 'SELECT * FROM `SiteInfo` WHERE `Serial` ='.$serial; 

// This works!!!

//$sql = 'SELECT * FROM `SiteInfo` WHERE `Serial` ="amg002";';   

$data = mysql_query($sql)
or die(mysql_error());

// puts the "SiteInfo" info into the $info array

$info = mysql_fetch_array( $data );

//Print out the contents of the entry

echo "Site Name: ".$info['SiteName'] . "<br /";
Print "Serial Number: ".$info['Serial'] . "<br />";
Print "Location: ".$info['Location'] . "<br />";

// Close the database connection

mysql_close($link); 
echo "Connection Closed. <br />";

我同意其引用問題,但是這是我的代碼的外觀。

  $sql = 'SELECT * FROM SiteInfo WHERE Serial = "' . $serial . '"';

要么

  $sql = "SELECT * FROM 'SiteInfo; WHERE 'Serial' = \"$serial\"";      

看起來像是報價問題:

 $sql = 'SELECT * FROM `SiteInfo` WHERE `Serial` ='.$serial.'; 

應該

 $sql = "SELECT * FROM `SiteInfo` WHERE `Serial` ='".$serial."'"; 

這意味着您的變量:

$_POST['Serial']

空了。 如果您的代碼不為空,則需要通過isset進行檢查,如下所示:

if (isset( $_POST['Serial'])) {
  $serial= $_POST['Serial'];

  // your rest of the code
}

另外,如果Serial是字符串而不是數字,則需要將其用引號引起來,請使用以下查詢:

$sql = "SELECT * FROM `SiteInfo` WHERE `Serial` = '$serial'"; 

您還可以查看查詢內容,例如:

$sql = "SELECT * FROM `SiteInfo` WHERE `Serial` = '$serial'"; 
echo $sql;
exit;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM