【问题标题】:MySQL + PHP: How to handle Umlauts in Stored Procedure Params?MySQL + PHP:如何处理存储过程参数中的变音符号?
【发布时间】:2018-09-03 07:13:09
【问题描述】:

我在 PHP 中有这个功能:

public function getData($data) {
    echo $data; //param still right for example: Schärding
    $result = mysqli_query($this->conn, "CALL sp_kampagne_findcurrent ('".$data."')") or die(mysqli_error($this->conn));
    @mysqli_next_result($this->conn);
    return $result;
}

如您所见,我将参数 $data 传递给我的 SP,然后返回结果。

这里的问题是,如果我传递单词 without Umlauts (ä,ö,ü),它会完美运行,但如果我使用像“Schärding”这样的词,它会返回零数据,即使有数据存储在 MySQL 中。

奇怪的是,如果我在PHPmyAdmin直接调用我的 SP 它与“Schärding”这个词一起工作。所以错误必须在PHP客户端。

如果您需要更多信息,请直接说出来。我会尝试添加更多信息。

【问题讨论】:

  • 你的数据库是用utf-8编码的?
  • UTF-8 all the way through的可能重复
  • @Alberto its utf8_general_ci
  • 使用stored procedures,而不是使用嵌入式变量打开代码进行sql注入
  • @RamRaider 你是什么意思?更多细节请

标签: php mysql encode


【解决方案1】:

你应该尝试添加

mysqli_set_charset 到您的代码,一旦建立了 mysqli 连接

例如:

mysqli_set_charset($this->conn,"utf8");

当然要更新编码以符合您的需要

【讨论】:

  • 我就是这样做的。它奏效了。谢谢你展示 StackOverflow 应该是什么。无毒。不是重复的东西。只是答案和解决方案。完美。
猜你喜欢
  • 2021-11-06
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多