使用> =

时间:2016-07-29 06:58:42

标签: php mysql

我试图让我的php脚本在我的mysql数据库中输出一行的名称。我知道问题是长的> ='$ Slong'。数据中的long值是float。 Slong值设置为1.11,并且有一行的长值为1.21。

我相信这就是问题所在:

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

2 个答案:

答案 0 :(得分:1)

Long是保留关键字,因此请使用反引号:

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

答案 1 :(得分: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?