我试图让我的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'");
答案 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
}