首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用>=添加和参数时Php Mysql查询不起作用

问使用>=添加和参数时Php Mysql查询不起作用
EN

Stack Overflow用户
提问于 2016-07-29 14:58:42
回答 2查看 36关注 0票数 0

我正在尝试让我的php脚本输出我的mysql数据库中的行名。我知道问题出在长>= '$Slong‘上。数据库中的长值是一个浮点型。Slong值设置为1.11,并且有一行的long值为1.21。

我认为这就是问题所在:

代码语言:javascript
复制
$Slong = $long - 0.01;
$result = mysql_query("SELECT name FROM locations WHERE age < '$age' AND aTime = 'Morning' AND long >= '$Slong'");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-29 15:18:48

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

代码语言:javascript
复制
$Slong = $long - 0.01;
$result = mysql_query("SELECT name FROM locations WHERE age < '$age' AND aTime = 'Morning' AND `long` >= '$Slong'");
票数 1
EN

Stack Overflow用户

发布于 2016-07-29 15:21:43

long是sql中的关键字。您应该使用反勾号字符(`)。

有关反勾号,请参阅https://superuser.com/questions/254076/how-do-i-type-the-tick-and-backtick-characters-on-windows

此外,您可以使用以下方法来避免sql注入,而不是使用直接替换值。

要实现这一点,您基本上有两种选择:

使用PDO (对于任何支持的数据库驱动程序):

代码语言:javascript
复制
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

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

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

使用MySQLi (用于MySQL):

代码语言:javascript
复制
$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?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38652390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档