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");
当然要更新编码以符合您的需要
我在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");
当然要更新编码以符合您的需要