2016-07-29 20 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?