MySQL + PHP: 如何处理存储过程参数中的变音符号?

MySQL + PHP: How to handle Umlauts in Stored Procedure Params?

我在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,然后 return 结果。

这里的问题是,如果我传递单词 而没有 元音变音符 (ä,ö,ü) 它工作完美,但如果我使用像 "Schärding" 这样的单词它 return的零数据,即使MySQL.

中存有数据

奇怪的是,如果我在 PHPmyAdmin 中直接 调用我的 SP 它可以 使用 Word "Schärding".所以错误必须在 PHP 客户端。

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

您应该尝试添加

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

例如:

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

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