ロリポップで、ブログをもっていました。

半年ほど毎日更新していましたが、最近はほとんど更新することもなくなっていました。

そんな中、ほかのHPをつくる必要性が出てきたので、これまで使っていたロリポップのアカウント変更し、経費を節約することにしました。
とはいえ、以前作ったブログを潰してしまうのもなーということで、新しいアカウント内へ移行することにしました。

しかし、DBのインポートが成功せず困っています。
助言よろしくおねがいします。

wordpress2.2.1の移行です。

参考サイトはこちら。
http://www.pentadou.com/posts/359

自分が実際に行った手順です。
ロリポップよりMyphpadminへアクセス。
DB内のデータをすべてバックアップ(エクスポート)
特に何も気にせず、デフォルト設定のまま。
db内のデータ削除。
ロリポップにてアカウント変更。
新アカウントにてWPをインストール
wp_optionsだけを選択してエクスポート
DB内再度削除
はじめにつくったsqlファイルをインポート → エラー
DBがおかしいのかなと思い、ロリポップよりDB全削除
新DB作成 mysql17.lolipop.jp → mysql19.lolipop.jp になったので
wp-configファイルの内容変更
再度インポート → エラー
アカウント変更により問題が生じているのかなと判断し
SQLファイル内のURLを「置換」にてすべて新しいURLへ変更。
インポート → エラー
ここで大きな問題が発覚。
SQLファイル内が文字化けしていた。
それでもインポートぐらいはできるのではないかと踏ん張ってみることに。

Warning: mb_strpos(): Unknown encoding or conversion error. in /home/sites/lolipop.jp/web/pma/libraries/string.lib.php on line 112

Warning: mb_strpos(): Unknown encoding or conversion error. in /home/sites/lolipop.jp/web/pma/libraries/string.lib.php on line 112



エラー
あなたは SQL パーサーのバグを見けられるかもしれません。あなたの問い合わせを念入りに確か・・・

----切り取り開始----
eNpVULtOw0AQ7O8rtkgZX3xnOw7XHeEESM4DO0AbQwI4sh3jOIR8TqS4hQYEASSoCBWiQkJ8AB0N
LULcRQJBsVvszM7srHDdhsugSqBKwRF1BsSksgygFkFeS2IThKpbHoPCeofB4DBM/HTQTXEY7ODk-- phpMyAdmin SQL Dump -- version 2.6.2-rc1 -- http://www.phpmyadmin.net -- -- ?ۥ??Ⱥ mysql17.・・・・





MySQLのメッセージ -->

#1007 - Can't create database 'LA11457625'. Database exists

といった感じのエラーが消えません。
creat文が邪魔という内容もみたので、すべて削除してみましたが、あまり効果はありませんでした。
エラー文は以下のようになりました。

『あなたの SQL 照会にエラーがあります。MySQL サーバーは以下のようにエラーを出します。そこには問題を解決する手助けがあるでしょう。

ERROR: 無効な句読点文字です。 @ 104
STR: \*\
SQL: {\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset128 \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\lang1041\f0\fs20 # WordPress MySQL database backup \par
# \par
# Generated: Friday 15. June 2007 00:00 JST \par
# Hostname: localhost \par
# Database: `mysqldbname` \par




MySQLのメッセージ -->

#1064 - 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 '{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset128 \'82\'6c\'82




問題は元のデータをすべて消してしまっているということです。
エクスポートの段階で失敗しているのだと思います。
(文字化けもしている)

それでも、大切な内容なのでどうにか形にもどしたいです。
ご協力お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

問題はおそらく文字コードですね.



文字コードについてどの程度の知識をお持ちか分かりませんが、
とりあえずサクラエディタや秀丸など、複数文字コード対応のエディタでエクスポートしたデータを開いてみて、文字コードを判別するところから始めては如何でしょうか.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPDOでDB ページング

一覧画面と検索画面を一緒にしています
一覧画面は10件表示にし、テキストになにも入力されてなかったらデータを全件表示したいです
また、1 l 2 l 3 のようにページを表示し、また何件中何件目データですと表示したいです
<!--一覧画面 index.php-->
<html>
<head>
<title>一覧画面</title>
</head>
<body>
<br><br>
<blockquote>
一覧画面
<br><br>
<?php
if ($_GET) { // データがGETされていたら
$event = isset($_GET['event']) ? $_GET['event'] : ''; // 取得
if (isset ($_GET['page'])==false) {
$page=0;
} else {
//そうでなければpageパラメータの値をpage変数にセット
$page = $_GET['page'];
}
}
?>
<?php
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$name=isset($_GET['name'])?$_GET['name']:"";
$sql ="select * from tbl_test where ";
$sql.="`氏名` like concat('%',?,'%') ";
$sql.="or `住所` like concat('%',?,'%') ";
$sql.= " limit " . $page*10 . ", 10" ;
$stmt = $pdo->prepare( $sql);
$stmt->execute(array($name,$name));
$count = $stmt->rowCount();
if($count>0){
print "<table border=1>" ;
print "<tr>";
print "<th>番号</th>";
print "<th>氏名</th>";
print "<th>住所</th>";
print "<th>操作</th>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
print "</tr>";
$ID = htmlspecialchars($row['番号']);
$NAME = htmlspecialchars($row['氏名']);
$ADDR = htmlspecialchars($row['住所']);
echo "<tr>
<td>$ID</td>
<td>$NAME</td>
<td>$ADDR</td>
<td><a href='edit.php?番号=$ID'>修正</a>
<a href='delete.php?番号=$ID'>削除</a></td></tr>";
};
print "</table>" ;
}else{
print "該当するデータがありません";
}
?>
<br><br><br>
<form action = "index.php" method="GET">
<input type="hidden" name="event" value="find">
<input type="text" name="name"style ="font-size:20px;width: 400px; height: 40px">
<input type="submit" value="検索" style ="font-size:20px;width: 100px; height: 40px">
</form>
<br><br>
<form action = "regist.php" method="GET">
<input type="hidden" name="event" value="regist">
<input type = "submit" value = "新規登録" style ="font-size:20px;width: 100px; height: 40px">
</form>
<input type="hidden" name="page" value="0">
</blockquote>
</body>
</html>
検索のテキストボックスが空だったら全件表示したいのですが今10件しか出ません
limitの書く場所が原因でしょうか?
またこのように一覧画面と検索結果画面が一緒じゃまずいですかね?
検索結果を別ウインドウじゃなく自分に返したいと思いこのやり方にしたのですがよくないですか?

一覧画面と検索画面を一緒にしています
一覧画面は10件表示にし、テキストになにも入力されてなかったらデータを全件表示したいです
また、1 l 2 l 3 のようにページを表示し、また何件中何件目データですと表示したいです
<!--一覧画面 index.php-->
<html>
<head>
<title>一覧画面</title>
</head>
<body>
<br><br>
<blockquote>
一覧画面
<br><br>
<?php
if ($_GET) { // データがGETされていたら
$event = isset($_GET['event']) ? $_GET['event'] : ''; // 取得
if (isset ($_GET['page'])==false) {
$page=...続きを読む

Aベストアンサー

>(1)がbになってしまいます

ああなるほど、絞り込みをしない場合も全件表示でしたっけ?
で、pageがあるときは絞り込みがない場合だけページング・・・ですか
ようやく見えてきました。

試してみればわかりますが、正直あまりいいUIではありませんね
全件表示してあるところからページングをする意味がないので
(全件表示させないためのページングですから)

とりあえずご指示のとおりであればこんな感じ?

$sql ="select * from tbl_test where 1 ";
if($name!==""){
$sql.="and (0 ";
$sql.="or `氏名` like concat('%',?,'%') ";
$sql.="or `住所` like concat('%',?,'%') ";
$sql.=") ";
}elseif(isset($_GET["page"])){
$sql.= " limit {$page},{$perpage}" ;
}

Q別のDB(Table)からの複数行のINSERT

Wordpressにあるusermetaというテーブルに、
別のDBのテーブルからデータをINSERTしたいのですが、
#1241 - Operand should contain 1 column(s) というエラーが表示されてうまくいきませんでした。

具体的なSQL文は、

insert into ***_usermeta (umeta_id,user_id,meta_key,meta_value)
select
(null,tableBid,'first_name',''),
(null,tableBid,'last_name',''),
(null,tableBid,'nickname',tableBname),
(null,tableBid,'***_capabilities','a:1:{s:10:\"subscriber\";b:1;}'),
(null,tableBid,'***_user_level','0')
from dbB.tableB where tableBname<> 'Admin'

dbBのtableB にあるAdmin行以外を対象としています。
実際にはもう少しデータが多いのですが、select (null,uid,'first_name','') from ・・・
だけにしても同じエラーが出ましたので、構文の書き方が間違っていると感じています。
(別のDBではなく、同じDBの別のTableからのINSERTでも同じエラーが表示されました)

上記のようなケースの場合、どのようにSQL文を書けばよいのでしょうか?
お分かりになられる方がいらっしゃいましたら、ご教示頂けますと幸いです。
宜しくお願い致します。

Wordpressにあるusermetaというテーブルに、
別のDBのテーブルからデータをINSERTしたいのですが、
#1241 - Operand should contain 1 column(s) というエラーが表示されてうまくいきませんでした。

具体的なSQL文は、

insert into ***_usermeta (umeta_id,user_id,meta_key,meta_value)
select
(null,tableBid,'first_name',''),
(null,tableBid,'last_name',''),
(null,tableBid,'nickname',tableBname),
(null,tableBid,'***_capabilities','a:1:{s:10:\"subscriber\";b:1;}'),
(null,tableBid,'***_user_le...続きを読む

Aベストアンサー

1.select文の カラムリストに () 付けで、複数行データ定義などと言うことはできません。
union all を使ってください。

2.まずは、select 文だけ書いてみてエラーのない select 文になれば、insert につないで実行可能です。
No1回答への補足をみると 1対1対応させるのは、できてるのですね。

3. umeta_idカラムが auto_increment だからnull を入れているなら、カラムリストから外しても良いと思います
insert into ***_usermeta (user_id,meta_key,meta_value)
select tableBid,'***_user_level','0'
from dbB.tableB where tableBname <> 'Admin'
union all
select tableBid,'nickname',tableBname
from dbB.tableB where tableBname <> 'Admin'

4. dbB.tableB の一行に対して、5行(以上)作って順番指定したいのですね。
5行用のデータを union all で繋いで作ったtableを join しましょう。

select b.tableBid as user_id, k.meta_k as meta_key, COALESCE( k.meta_v , b.tableBname ) as meta_value
from
( select tableBid, tableBname
from dbB.tableB where tableBname <> 'Admin'
) as b
cross join
( select 'first_name' as meta_k, '' as meta_v , 1 as order_no
union all select 'last_name', '' , 2
union all select 'nickname', null, 3
union all select '***_capabilities','a:1:{s:10:\"subscriber\";b:1;}' , 4
union all select '***_user_level','0' , 5
) as k
order by b.tableBid, k.order_no
;

上記のtable記述順でcross join するなら、order by は無くても、希望の順番にはなりそうですけど、一応いれておきました。
このselect文で、insert したい行が生成できているならば、あとは先頭にinsert 用の構文(3で提示の1行目)を繋げばよいでしょう。

1.select文の カラムリストに () 付けで、複数行データ定義などと言うことはできません。
union all を使ってください。

2.まずは、select 文だけ書いてみてエラーのない select 文になれば、insert につないで実行可能です。
No1回答への補足をみると 1対1対応させるのは、できてるのですね。

3. umeta_idカラムが auto_increment だからnull を入れているなら、カラムリストから外しても良いと思います
insert into ***_usermeta (user_id,meta_key,meta_value)
select tableBid,'***_user_level','...続きを読む

Qmysql データ更新

一覧画面に更新ボタンを作成しました
更新ボタンを押すとkoushin_input.phpにデータを渡し入力フォームを表示され番号、氏名、住所が選択されたデータが表示されるようにしたいのでが更新ボタンを押しても下記のように出ます

string(64) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=0" bool(false) データが削除されています

ソースコードはtop.php
一覧画面です
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>一覧画面</title>
</head>
<body>
<BLOCKQUOTE>
<BR>一覧画面<BR><BR>
<?php
$con=mysqli_connect("localhost","root","admin","db_test");
if(isset($_GET["del"]) and isset($_GET["id"]) and $_GET["del"]==1){
$id=(int) $_GET["id"];
$result = mysqli_query($con,"DELETE FROM tbl_test where `番号`={$id}");
}
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM tbl_test");

echo "<table border='1'>
<tr>
<th>番号</th>
<th>氏名</th>
<th>住所</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['番号'] . "</td>";
echo "<td>" . $row['氏名'] . "</td>";
echo "<td>" . $row['住所'] . "</td>";
echo "<form action=koushin_input.php method=get>";
echo "<td><input type=submit value=更新></td>";
echo "</form>";
echo "<td><a href=\"".$_SERVER["SCRIPT_NAME"]."?del=1&amp;id=".$row['番号']."\">削除</a></td>";

echo "</tr>";
}
echo "</table>";


mysqli_close($con);
?>

<BR><BR><BR> <A HREF="http://localhost/regist.php">
<INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A>

</BLOCKQUOTE>
</body>
</html>

受け取る側
koushin_input.phpです


<html>
<body>
<?php
// データベースに接続
if(!$con=mysql_connect("localhost","root","admin")){
echo"接続エラー";
exit;
}

// データベースを選択
if(!mysql_select_db("db_test",$con)){
echo"データベース選択エラー";
exit;
}

// SELECT文を実行
$id=(isset($_GET["id"]))?((int) $_GET["id"]):0;
$sql = "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}";
var_dump($sql);
if(!$res=mysql_query($sql)){
echo "SQL実行時エラー";
exit;
}
// データの存在チェック
if(!$row=mysql_fetch_array($res)){
$row=mysql_fetch_array($res);
var_dump($row);
echo "データが削除されています";
exit;
}


// 入力画面の出力
echo "<form action=koushin.php method=post>";
echo "名前:<input type=text name=NAME value=\"" . $row['氏名'] . "\"> ";
echo "住所:<input type=text name=ADDR value=" . $row['住所'] . "> ";
echo "<input type=submit value=更新>";
echo "</form>";

// 結果セットの解放
mysql_free_result($res);

// データベースから切断
mysql_close($con);
?>
</body>
</html>

どこが原因なんでしょうか?

一覧画面に更新ボタンを作成しました
更新ボタンを押すとkoushin_input.phpにデータを渡し入力フォームを表示され番号、氏名、住所が選択されたデータが表示されるようにしたいのでが更新ボタンを押しても下記のように出ます

string(64) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=0" bool(false) データが削除されています

ソースコードはtop.php
一覧画面です
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>一覧画面</title>
</head>
<body...続きを読む

Aベストアンサー

top.php の
echo "<form action=koushin_input.php method=get>";
echo "<td><input type=submit value=更新></td>";
echo "</form>";
で id を渡していないから。
HTMLの基本です。
echo "<form action=koushin_input.php method=get>";
echo "<input type=hidden name=id value=".$row['番号'].">";
echo "<td><input type=submit value=更新></td>";
echo "</form>";
としましょう。

QPHP Mysql エラー

データの新規登録を行っているのですが
番号が重複しないでまたデータがすべて入力されたらデータの追加を行いたいのですが
エラーが出て対処できずに困っています
下記のエラーがでます

Parse error: syntax error, unexpected end of file in C:\WWW\test\htdoes\insert.php on line 20
20行目は一番下の行です
<html>
<body>
<?php
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");

if($st->rowCount()>0){
if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != ''){
$st = $pdo->prepare("insert ignore into tbl_test values(?,?,?)");
$st->execute(array($_POST['ID'], $_POST['NAME'],$_POST['ADDR']));
header('Location: http://localhost/top.php');
}else{
print データ未入力の場所があります;
}
}else{
print "既に登録している番号です";
?>
</body>
</html>

データの新規登録を行っているのですが
番号が重複しないでまたデータがすべて入力されたらデータの追加を行いたいのですが
エラーが出て対処できずに困っています
下記のエラーがでます

Parse error: syntax error, unexpected end of file in C:\WWW\test\htdoes\insert.php on line 20
20行目は一番下の行です
<html>
<body>
<?php
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");

if($st->rowCount()>0){
if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['AD...続きを読む

Aベストアンサー

コンピュータが「ここおかしいんじゃね?」ってご丁寧に行番号までつけてエラーメッセージを出してくれてるわけです。
英語がわからないならGoogle翻訳に頼っても構いません。
エラーの内容を理解する努力をしましょう。
それをするつもりがないならプログラミングは諦めてください。


<html>
<body>
<?php
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");

if($st->rowCount()>0){ //←PC「$stが何なのかわからないからrowCount()もわからない」
if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != ''){
(以下略)


ちなみに、「重複チェック→未入力チェック→登録」という流れで書いていますが、
「未入力チェック→重複チェック→登録」の順にした方がいいかと思います。

QMySQLでデータ表示

MySQLでデータの表示を行っています
10件ずつ表示し、11件からは2ページ目に表示したいです
サイトや本を見ながらデータ表示と次の10件のリンクは表示されるよう自力で頑張ったのですが

次の10件を押してもデータが変わらず1件目から10件目のままです
どこが違うか教えてもらえますか。

どうコードを入力するか教えてくれたらありがたいです

一覧 ta2.phpです
<html>
<body>
<form action = "ta2.php" method="GET">
<input type="hidden" name="page" value="0">
</form>
<?php
//データベースに接続
if (!$con = mysql_connect("localhost", "root", "admin")) {
echo "接続エラー" ;
exit ;
}

//データベースを選択
if (!mysql_select_db("db_test", $con))
{
echo "データベース選択エラー" ;
exit ;
}

//LIMITを使ったSELECT文を作成
$sql = "select * from tbl_test" ;
$sql.= " limit " . $page*10 . ", 10" ;

//SQL実行
if (!$res = mysql_query($sql))
{
echo "SQLエラー<BR>" ;
exit ;
}

//検索結果表示
echo "<table border='1'>
<tr>
<th>番号</th>
<th>氏名</th>
<th>住所</th>
<th>操作</th>
</tr>";
while($row = mysql_fetch_array($res))
{
$ID = htmlspecialchars($row['番号']);
$NAME = htmlspecialchars($row['氏名']);
$ADDR = htmlspecialchars($row['住所']);
echo "<tr>
<td>$ID</td>
<td>$NAME</td>
<td>$ADDR</td>
<td><a href='edit.php?番号=$ID'>修正</a>
<a href='delete.php?番号=$ID'>削除</a></td></tr>";
header('content-type: text/html; charset="utf-8"');
if ($_GET) { // データがGETされていたら
$page = isset($_GET['page']) ? $_GET['page'] : ''; // 取得

}
}

$sql = "select count(*) from tbl_test " ;
if (!$res = mysql_query($sql)) {
echo "SQLエラー<BR>" ;
exit ;
}
$row = mysql_fetch_array($res) ;
$cnt = $row[0] ;

//ページ表示
if(!$cnt > 10)
echo ceil($cnt / 10), "ページの中の", $page + 1, "ページ目を表示<br>" ;

//前の10件
if ($page != 0) {
echo "<a href = ta2.php?page= $page>" ;
echo "&lt 前の10件" ;
}

//次の10件
if (($page + 1)*10 < $cnt) {
echo "<a href = ta2.php?page= $page>" ;
echo " 次の10件 " ;
}

//結果セットの開放
mysql_free_result ($res) ;

//データベースから切断
mysql_close($con) ;
?>
</table>
</body>
</html>

MySQLでデータの表示を行っています
10件ずつ表示し、11件からは2ページ目に表示したいです
サイトや本を見ながらデータ表示と次の10件のリンクは表示されるよう自力で頑張ったのですが

次の10件を押してもデータが変わらず1件目から10件目のままです
どこが違うか教えてもらえますか。

どうコードを入力するか教えてくれたらありがたいです

一覧 ta2.phpです
<html>
<body>
<form action = "ta2.php" method="GET">
<input type="hidden" name="page" value="0">
</form>
<?php
//データベースに接続...続きを読む

Aベストアンサー

>$page = isset($_GET['page']) ? $_GET['page'] : ''; // 取得
で、$pageを検証する前に


>$sql.= " limit " . $page*10 . ", 10" ;

で変数$pageを利用しています
そのままだと常に$sqlのlimitは0始まりになります


人気Q&Aランキング

おすすめ情報