Rumah  >  Soal Jawab  >  teks badan

Apabila mysqli memanggil prosedur tersimpan, mysql yang masuk sentiasa bercelaru. (Lampirkan proses operasi, butiran dan tangkapan skrin)

Senario perniagaan: Halaman php memanggil prosedur tersimpan mysql, yang mempunyai 1 parameter input dan 1 parameter output.
Masalah berlaku: Ia boleh dilaksanakan seperti biasa, tetapi selepas memasukkan parameter ke dalam pangkalan data, aksara bercelaru sentiasa dipaparkan.

Kod halaman PHP adalah seperti berikut

<head>
<meta charset="utf-8">
</head>
<?php
$conn = new MySQLi("数据库地址","数据库用户","密码","数据库名");
mysqli_query($conn,"SET NAMES utf8");
$info_name_cn='测试x201';
$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');
$result=$conn->query("CALL x2('$info_name_cn',@exeout_rows)");
$result=$conn->query("SELECT @exeout_rows");
$recordset=mysqli_fetch_assoc($result);
$exeout_rows=(int)$recordset["@exeout_rows"];
?>
<div>---|<?php echo $exeout_rows; ?>|<?php echo mb_detect_encoding($exeout_rows); ?>|---</div>


Kod prosedur yang disimpan mysql adalah seperti berikut

CREATE DEFINER=`数据库名`@`%` PROCEDURE `x2`(
IN exein_info_name_cn VARCHAR(5)
,OUT exeout_rows int
)
BEGIN
        set exeout_rows=1;
         
        insert into 测试表
        (
        info_name_cn
        )
        values
        (
        exein_info_name_cn
        );
END

Dalam pangkalan data mysql, pilihan jadual ujian ialah "utf8/utf8_ganaral_ci", dan set aksara dan susun susunan info_name_cn medan dalaman bagi jadual ujian ialah "utf8/ utf8_ganaral_ci"

Saya mencuba kaedah penukaran yang berbeza - teks berikut
tetapi keputusan semuanya bercelaru - keputusan selepas pelaksanaan adalah seperti berikut

(id ialah) 29: Tidak ditukar
//$info_name_cn=mb_convert_encoding($info_name_cn,' UTF-8');

(id is)30: Tukar ke UTF-8
$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');
(id is)31: Tukar ke GB2312
$info_name_cn= mb_convert_encoding($info_name_cn,'GBK');

(id is)32: Tukar ke GBK
$info_name_cn=mb_convert_encoding($info
_encoding($info
_encoding");
(id is)33: Tukar kepada BIG5
$info_name_cn= mb_convert_encoding($info_name_cn,'ASCII');

(id is)34: Tukar ke ASCII
$info_name_cn=mb_convert_encoding($info

_encoding');

1.png


Selain itu, menjalankan kod berikut boleh berfungsi seperti biasa Tambahkan bahasa Cina ke pangkalan data

<?php
$link = @mysql_connect("数据库地址","数据库用户名","数据库密码")
or die("连接失败" .mysql_error());
@mysql_select_db("数据表") or die("连接失败".mysql_error);
function insert(){
mysql_query("set names utf8");
$sqlinsert = "insert into 测试表(info_name_cn) values('李四')";
$resultinsert = mysql_query($sqlinsert);
if($resultinsert){
echo "insert data success";
}else{
echo "insert data fail".mysql_error();
}
}
insert();
mysql_close($link);
?>

2.png

**越狱兔**越狱兔1890 hari yang lalu1104

membalas semua(3)saya akan balas

  • innocence

    innocence2019-07-27 11:41:55

    *.masalah pengekodan fail php

    balas
    1
  • **越狱兔

    Ya, terima kasih banyak-banyak. Ia telah selesai sekarang. Saya merasakan bahawa ia secara langsung menggunakan Notepad++ untuk menyalin dan menampal, menyebabkan masalah pengekodan dalam fail .php. Saya akan meninggalkan proses operasi untuk perkara yang akan datang kemudian (saya orang baru, sila jangan kisah jika anda seorang sarjana) 1. Buat fail abc.txt baharu, simpan fail dalam format utf8, tukar nama kepada abc.php dan bukanya. 2. Buka kod yang ditulis sebelum ini dalam txt notepad, salin dan tampalkannya ke dalam fail abc.php. Simpan dan tutup. 3. Gunakan perisian Notepad++ untuk membuka abc.php, dan pilih UTF-8 untuk item "Pengekodan" (untuk mengelakkan pengepala BOM).

    **越狱兔 · 2019-07-27 15:12:50
  • **越狱兔

    **越狱兔2019-07-22 17:03:00

    Tambahan: Dalam situasi yang sama, saya menukar kaedah pengekodan menyimpan fail kepada ASCI, dan kod halaman berjalan seperti biasa selepas menetapkannya kepada GBK.

    balas
    0
  • Batalbalas