データベースにインポートする必要があるテキストがあり、PDO の記述方法を使用する必要があります
1 年生: Xiao Ming、Xiao Hong、Xiao...、Xiao Bai
2 年生: Xiao A、Xiao B 、Xiao C、... Xiao Z
… …
インポートする必要があるデータテーブルは
name、banji、other
Xiao Ming 1年生 0
Xiaohong 1年生 0
………………
Little A 2ndグレード0
…………つまり、それぞれにクラス名を持ってきます
PHPを使う前は、file_get_contentsを使ってインポートし、preg_replaceを使ってセパレータに置き換えていました
それをarray_filterで整理してforeach($arr)を使います$value として) をインポートします
しかし、PDO を使用していることがわかりました。それを書くことができません。助けてください。
失敗したコードを投稿してください
失敗したコードを投稿してください
テーブルには少なくとも 3 つの列があるため、"insert into biao VALUES " を実行します。$string このような命令は失敗するはずです
つまり、「('$v')」は次のようになります "('一年生: シャオミン、シャオホン、シャオ...、シャオバイ' ),"
テーブル列には少なくとも 3 つあるので、"insert intobiao VALUES " . $string このようなコマンドは失敗するはずです
モデレーターこんにちは、これは 1 つのフィールドのインポートであるというメモを書きました。この単一フィールドのインポートは、PDO を使用して書き込むことはできません。
$dao = file_get_contents(文本);$dao = preg_replace('/\n|\r\n/', '|', $dao);$arr = array_filter(explode('|', $dao));$arr = array_chunk($arr, 1000);foreach($arr as $value){ $string = ''; foreach($value as $v){ $string .= "('$v'),"; } $string = trim($string, ','); mysql_query("insert into biao VALUES " . $string); }
$s =<<< TXT一年级:小明,小红,小,小白二年级:小A,小B,小C,小ZTXT;$ar = explode(PHP_EOL, $s);array_walk($ar, function(&$v) { $v = preg_split('/:|,/', $v);});//print_r($ar);//构建数据结束$db = new PDO('mysql:dbname=test', 'root', '');$db->query('set names gbk');$db->query("create temporary table biao (name varchar(10), banji varchar(10), other int) charset=gbk");$smt = $db->prepare("insert into biao values (?, ?, 0)");//数据库准备结束foreach($ar as $v) { $m = array_shift($v); foreach($v as $t) $smt->execute(array($t, $m));}//插入数据结束$r = $db->query("select * from biao")->fetchall(PDO::FETCH_ASSOC);print_r($r); //看一下结果
解析エラー: 構文エラー、
[/code] の予期しない T_FUNCTION
すべてのローカル テストでエラーが報告されるのはなぜですか?
... in その後に行番号があり、どの行であるかがわかります
array_walk($ar, function(&$v) {
$v = preg_split('/:|,/', $v);
それは、あなたの php を意味します。バージョンは 5.3 未満です
PHP バージョン (php_version ): 5.5.25
PHP バージョン 5.5.25
コードが修正された場合は、完全なエラー メッセージを投稿してください
解決されました、それが真実であることが判明しました ローカル バージョンには問題があります。インターネットにアップロードしてください