1. Question:
The database is MS SQLServer2000. The data of a table in SQLServer2000 needs to be imported into MySQL5. The fields of the SQLServer2000 table are named in Simplified Chinese (it is strongly recommended not to use Chinese as field names). In fact, the operation is to query the records on SQL Server and insert them into MySQL. The chosen scripting language is PHP. PHP opens MSSQL and MySQL extensions, making it easy to operate both databases.
The problem occurs in that the field names of the table in SQLServer are in Chinese. When the written query statement is tested in SQLServe, records are returned. When using PHP's MSSQL extended query, an error is reported.
I checked the information on the Internet. There is not much relevant information on the Internet. Many netizens think that the MSSQL extension of PHP does not support Chinese in SQL statements. After checking the information, PHP's MSSQL supports Chinese statements in SQL. Most of the error reporting problems are due to encoding problems. The encoding database and encoding are not consistent with the encoding of the query statement. The Chinese part of the query statement in SQL Server becomes garbled, causing the query to fail.
2. Solution:
Now that we know the reason, we will analyze and solve it and confirm that it is a problem of inconsistent coding. The solution is divided into the following steps:
1. Confirm the encoding of the SQLServer database. My data encoding is GBK.
2. Confirm the encoding of the current PHP script file. My encoding is UTF-8.
3. Convert the encoding of SQL query statements.
Supplement: Some netizens mentioned that they need to convert the PHP script file encoding to be consistent with the database encoding. In fact, this step is not necessary. Just make sure that your SQL statement is consistent with the database encoding. The reason why it is recommended not to convert is If your PHP script file contains other PHP scripts, you must also convert the encoding of all include or require script files. Otherwise, PHP script encoding is not uniform and it is easy to make errors. If there are many interrelated files, this is also very troublesome. problem and complicates matters.
Third plan:
Write a conversion function to convert the SQL statement encoding before operating the SQL. My sample code is posted below:
Copy code The code is as follows:
//Encoding conversion function
function utf8togb($s) {
return iconv('utf-8', 'gbk//IGNORE', $s); / / IGNORE parameter is ignored when encountering characters that cannot be converted
}
//It is recommended to replace all Chinese fields with English aliases to facilitate the following operations and encoding conversion and other issues
$sql="SELECT [id], [column] as typeid, [Title] as title, [Author] as author, convert(text, [Text]) as body FROM [Article Table];";
$sql = utf8togb($sql);