環境仕様:
os:windows 7 64 bit
webserver:wamp(apache) with:
php 5.3.8
mysql 5.5.16
text editor in use:notepad++
問題:
utf8 (ヘブライ語) データを含むデータで構成される .sql ファイルをロードしようとすると
、構文は phpmyadmin に従って正しいですが、php スクリプトを介してファイルをアップロードしようとすると、エラーが出力されます。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP DATABASE IF EXISTS squazza; CREATE DATABASE IF NOT EXISTS squazza; ' at line 1
SQL ファイル (db/default.sql) は次のとおりです。
DROP DATABASE IF EXISTS squazza;
CREATE DATABASE IF NOT EXISTS squazza;
use squazza;
CREATE TABLE IF NOT EXISTS `mainframe` (
`storedbottles` smallint(255) DEFAULT NULL,
`bottlescompressed` smallint(255) DEFAULT NULL,
`users` smallint(255) DEFAULT NULL,
`status` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS `pages` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`accessname` varchar(50) DEFAULT NULL,
`pagename` varchar(50) DEFAULT NULL,
`title` varchar(100) DEFAULT NULL,
`metadesc` varchar(500) DEFAULT NULL,
`metakey` varchar(180) DEFAULT NULL,
`lang` varchar(20) DEFAULT NULL,
`leftcontent` longtext,
`rightcontent` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `users` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`identification` varchar(20) DEFAULT NULL,
`LastName` varchar(30) DEFAULT NULL,
`FirstName` varchar(30) DEFAULT NULL,
`born` date DEFAULT NULL,
`joined` date DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`email` varchar(20) DEFAULT NULL,
`paypal` varchar(20) DEFAULT NULL,
`Address` varchar(50) DEFAULT NULL,
`City` varchar(50) DEFAULT NULL,
`username` varchar(20) DEFAULT NULL,
`pass` varchar(20) DEFAULT NULL,
`card` varchar(20) DEFAULT NULL,
`balance` float(6,4) DEFAULT NULL,
`bottles` smallint(255) DEFAULT NULL,
`administrator` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1 ;
INSERT INTO `pages` (`accessname`,`pagename`, `title`, `metadesc`, `metakey`, `lang`, `leftcontent`, `rightcontent`) VALUES
('register','הרשמה', 'הסבר מפורט אלינו', 'הסבר אל יוצריומפתחי הדחסן הבקבוקים', 'בקבוקים,דחסן,בקבוק,איכות הסביבה', 'he','<h2>הרשמה</h2><br\><h4>דף הרשמה למשטמשים חדשים</h4><br\>','<h3>דף זה הוא הינו דף הרשמה למשטמשים חדשים המעוניינים להיצתרף לשרות דחיסת הבקבוקים.');
INSERT INTO `pages` (`accessname`,`pagename`, `title`, `metadesc`, `metakey`, `lang`, `leftcontent`, `rightcontent`) VALUES
('login','כניסה', 'הסבר מפורט אלינו', 'הסבר אל יוצריומפתחי הדחסן הבקבוקים', 'בקבוקים,דחסן,בקבוק,איכות הסביבה', 'he','<h2>משחזר הבקבוקים</h2><br\><h4>רק שחזור מוביל לשיפור</h4><br\>','<h3>פרויקט דחסן</h3>פרויקט דחסן הוא הינו פרויקט שנועד לשפר את איכות הסביבה');
INSERT INTO `pages` (`accessname`,`pagename`, `title`, `metadesc`, `metakey`, `lang`, `leftcontent`, `rightcontent`) VALUES
('aboutproject','אל הפרויקט', 'הסבר מפורט אלינו', 'הסבר אל יוצריומפתחי הדחסן הבקבוקים', 'בקבוקים,דחסן,בקבוק,איכות הסביבה', 'he','<h2>משחזר הבקבוקים</h2><br\><h4>רק שחזור מוביל לשיפור</h4><br\>','<h3>פרויקט דחסן</h3>פרויקט דחסן הוא הינו פרויקט שנועד לשפר את איכות הסביבה');
INSERT INTO `pages` (`accessname`,`pagename`, `title`, `metadesc`, `metakey`, `lang`, `leftcontent`, `rightcontent`) VALUES
('aboutus','אלינו', 'הסבר מפורט אלינו', 'הסבר אל יוצריומפתחי הדחסן הבקבוקים', 'בקבוקים,דחסן,בקבוק,איכות הסביבה', 'he','<h2>משחזר הבקבוקים</h2><br\><h4>רק שחזור מוביל לשיפור</h4><br\>','<h3>פרויקט דחסן</h3>פרויקט דחסן הוא הינו פרויקט שנועד לשפר את איכות הסביבה');
INSERT INTO `pages` (`accessname`,`pagename`, `title`, `metadesc`, `metakey`, `lang`, `leftcontent`, `rightcontent`) VALUES
('home','בית', 'דף בית של הדחסן', 'הדחסן שדוחס בקבוקים וסם כסף ברטיס אוטומתי', 'בקבוקים,דחסן,בקבוק,איכות הסביבה', 'he','<h2>משחזר הבקבוקים</h2><br\><h4>רק שחזור מוביל לשיפור</h4><br\>','<h3>פרויקט דחסן</h3>פרויקט דחסן הוא הינו פרויקט שנועד לשפר את איכות הסביבה');
ファイルを送信しようとしている PHP コードは次のとおりです。
$link=new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Could not connect to database');
mysqli_multi_query($link,file_get_contents('db/default.sql')) or die(mysqli_error($link));
現在、SQLエラーを解決するいくつかのことがありますが、ファイルのエンコーディング(メモ帳++で)をUTFに設定するなどの新しい問題が発生しました
。