如何转义mysql查询中的点?

发布于 2024-10-07 18:55:53 字数 269 浏览 2 评论 0原文

数组 $rf 的值包含一个点:

  $rf = array(img34563.jpg , img34536.jpg);

  $query = "SELECT * FROM $appin_table WHERE img IN ( ".implode( ',' , $rf )."";
  $result = mysql_query($query)
  or die(mysql_error());

我怎样才能转义该点,这可能吗?

提前致谢。

The values of the array $rf contain a dot:

  $rf = array(img34563.jpg , img34536.jpg);

  $query = "SELECT * FROM $appin_table WHERE img IN ( ".implode( ',' , $rf )."";
  $result = mysql_query($query)
  or die(mysql_error());

How could I escape the dot, is that possible?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

合约呢 2024-10-14 18:55:53

单独转义点对你没有帮助;你最终会得到这样的查询:

SELECT * FROM table WHERE img IN(img34563.jpg , img34536.jpg)

你必须先应用引号:

function quote($k)
   {
      return '"' . mysql_real_escape_string($k) . '"';
   }

$values = array_map('quote', $rf);
$query = "SELECT * FROM $appin_table WHERE img IN ( ".implode( ',' , $values )."";

Escaping the dot alone won't help you; you'll end up with a query like that:

SELECT * FROM table WHERE img IN(img34563.jpg , img34536.jpg)

You'll have to apply quotes before:

function quote($k)
   {
      return '"' . mysql_real_escape_string($k) . '"';
   }

$values = array_map('quote', $rf);
$query = "SELECT * FROM $appin_table WHERE img IN ( ".implode( ',' , $values )."";
大姐,你呐 2024-10-14 18:55:53

为了避免转义,请使用准备好的语句:

$rf = array('img34563.jpg', 'img34536.jpg');

$db_connection = new mysqli("localhost", "user", "pass", "db");
$statement = $db_connection->prepare("SELECT * FROM $appin_table WHERE img IN (?,?)");
$statement->bind_param("ss", $rf[0], $rf[1]);
$statement->execute();

更多信息:http://www.php .net/manual/en/mysqli.prepare.php

To avoid escaping, use a prepared statement:

$rf = array('img34563.jpg', 'img34536.jpg');

$db_connection = new mysqli("localhost", "user", "pass", "db");
$statement = $db_connection->prepare("SELECT * FROM $appin_table WHERE img IN (?,?)");
$statement->bind_param("ss", $rf[0], $rf[1]);
$statement->execute();

More info: http://www.php.net/manual/en/mysqli.prepare.php

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文