我已經編寫了一個PHP腳本來使用Unicode數據填充MySQL表。不過,我遇到了一些小問題。例如,對於空間字符(ID = 32)的character
柱是空的,甚至當我單獨運行下面的命令:在MySQL中存儲單個空格字符
UPDATE unicode SET `character` = ' ' WHERE id = 32;
任何想法?下面是我使用填充表的腳本(包含腳本common.php
定義database
功能,這是一個PDO對象):
<?php
include_once('common.php');
// Fetch data from Unicode website
$file = fopen('http://www.unicode.org/Public/UNIDATA/UnicodeData.txt', 'r');
// Iterate through each line of the file
while($row = fgets($file)) {
// Gather data
$column = explode(';', $row);
$id = hexdec($column[0]);
$name = $column[1];
$general_category = $column[2];
$uppercase_mapping = hexdec($column[12]);
$lowercase_mapping = hexdec($column[13]);
$titlecase_mapping = hexdec($column[14]);
// Build the database query
$query = sprintf("INSERT IGNORE INTO unicode VALUES (%d, CHAR(%d USING UTF8), '%s', '%s', %d, %d, %d)",
$id,
$id,
$name,
$general_category,
$uppercase_mapping,
$lowercase_mapping,
$titlecase_mapping);
database()->query($query);
echo $id.' ';
}
?>
由於您使用的是PDO,您爲什麼使用'sprintf'來編寫查詢?這不是使用[適當的SQL佔位符]的安全替代方法(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。 – tadman
你怎麼確定它是空的? –
@AlainCollins:通過檢查。我正在使用MySQL工作臺來探測值。 –