【问题标题】:Select pdo cant find the symbol like & '选择 pdo 找不到像 & ' 这样的符号
【发布时间】:2020-01-08 18:31:00
【问题描述】:

PDO 找不到 & 符号。 我的数据是:

Fast & Furious

我的代码是:

$sec = $db->prepare("Select * from filmler where film_ad = ?");
$sec->bindParam(1, $needle, PDO::PARAM_STR)

rowCount 结果为 0 但$needle 等于“速度与激情”。 我的意思是我实际上正在寻找“速度与激情”

【问题讨论】:

  • 请添加更多细节。目前还不清楚你的问题到底是什么
  • 更改过滤器:where film_ad LIKE ? 并为 $needle 使用 %:$sec->bindParam(1, "%$needle%",PDO:: PARAM_STR);
  • 显示您实际执行语句、获取结果并检查/转储结果的代码。
  • 数据库中的数据可能是 HTML 编码的。
  • 那么你数据库中的数据不是你想的那样。可能有杂散的空白、不可打印的字符,或者数据的编码方式与您想象的不同。运行SELECT HEX(film_ad) WHERE id = ? 或类似的并发布结果,我们可以告诉你它实际上是什么

标签: php database pdo


【解决方案1】:

绑定变量后执行准备好的语句。

$needle = 'Fast & Furious';

如果你想找到与$needle 完全相同的值,试试这个:

$sec = $db->prepare('SELECT * FROM filmler WHERE film_ad = ?');
$sec->bindParam(1, $needle, PDO::PARAM_STR);
$sec->execute();

var_dump($sec->rowCount());

或者:

$sec = $db->prepare('SELECT * FROM filmler WHERE film_ad = ?');
$sec->execute([$needle]);

var_dump($sec->rowCount());

如果您想将LIKE 运算符与% 通配符一起使用,请尝试this

$needle = "%{$needle}%";

$sec = $db->prepare('SELECT * FROM filmler WHERE film_ad LIKE ?');
$sec->bindParam(1, $needle, PDO::PARAM_STR);
$sec->execute();

var_dump($sec->rowCount());

Or:

$sec = $db->prepare('SELECT * FROM filmler WHERE film_ad LIKE CONCAT("%", ?, "%")');
$sec->execute([$needle]);

var_dump($sec->rowCount());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2022-09-28
    • 2018-12-19
    • 2011-02-02
    • 1970-01-01
    • 2022-06-29
    相关资源
    最近更新 更多