2016-07-29 75 views
0

我想讓我的php腳本輸出在我的mysql數據庫中的行的名稱。我知道這個問題是與長=>'$ Slong'。數據中的長整型值是一個浮點數。 Slong值設置爲1.11,並且有一個長度值爲1.21的行。PHP的Mysql查詢不工作當添加AND參數與> =

我相信這是問題所在:

$Slong = $long - 0.01; 
$result = mysql_query("SELECT name FROM locations WHERE age < '$age' AND aTime = 'Morning' AND long >= '$Slong'"); 
+1

停止使用不建議使用的版本'mysql_ *'。用準備的語句轉到'mysqli_ *'或'PDO' –

+0

@Anant你能指點我在哪找到這方面的信息嗎? – Max

+0

什麼是錯誤? – mitkosoft

回答

1

Long保留關鍵字,所以周圍使用反引號:

$Slong = $long - 0.01; 
$result = mysql_query("SELECT name FROM locations WHERE age < '$age' AND aTime = 'Morning' AND `long` >= '$Slong'"); 
0

long是SQL關鍵字。你應該使用反勾號字符(`)。

對於反勾號,請參閱https://superuser.com/questions/254076/how-do-i-type-the-tick-and-backtick-characters-on-windows

同樣而是採用直接替換值,可以使用下面的方法來避免SQL注入。

你基本上有兩種選擇來實現這一目標:

使用PDO(任何支持的數據庫驅動程序):

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); 

$stmt->execute(array('name' => $name)); 

foreach ($stmt as $row) { 
    // do something with $row 
} 

使用庫MySQLi(MySQL的):

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?'); 
$stmt->bind_param('s', $name); 

$stmt->execute(); 

$result = $stmt->get_result(); 
while ($row = $result->fetch_assoc()) { 
    // do something with $row 
} 

請參閱How can I prevent SQL-injection in PHP?