人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLで挿入できないです(PHPとの連携)
---まず最初に---
以前、IDというint(5)のフィールドがあるテーブルの時は問題なく動作していました。
IDをプライマリキーにして、他にtext型のフィールドがありました。
※この時はIDフィールドにレコードを入れてからtextフィールドにレコードを入れてました。
--------------------------------------------------
でも、今回のテーブルにはIDとかないんです。
text型のフィールドが二つあって、そこに
「あああああ」「いいいいい」とかの文字を入れたいのです。
でも、いきなりtext型のフィールドに「あああああ」を入れようとしてもなぜか何も入りません。
なぜか、int型のフィールドなら、普通に動作するみたいです。

foreachで配列の数だけtextフィールドに挿入するんですが。以前は普通にできてたんです。でも、今回はいきなりtext型のフィールドに「あああああ」を入れることができません。
上手くいかない理由がわからないので、
解決法をご教授頂けませんでしょうか??

●質問者: ty2016
●カテゴリ:ウェブ制作
✍キーワード:MySQL PHP キー フィールド プライマリ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●50ポイント

想像ですが以前は下記のような具合に挿入処理+更新処理の手順だったのではないでしょうか?

# IDフィールドにレコードを入れてから
INSERT INTO テーブル名 (IDフィールド名) VALUES (数値);
# textフィールドにレコードを入れてました
UPDATE テーブル名 SET テキストフィールド名 = '文字列' WHERE IDフィールド名 = 数値;

そして今回は下記のようにいきなり更新処理だけを行っているのでは?

# textフィールドにレコードを入れてました
UPDATE テーブル名 SET テキストフィールド名 = '文字列' WHERE IDフィールド名 = 数値;

もしも上記の推測が正しければ下記のように挿入処理を行うようにするだけの話となりますが、さて、この推測は正しいかどうか・・・

# textフィールドにレコードを入れる
INSERT INTO テーブル名 (テキストフィールド名, テキストフィールド名) VALUES ('あああああ','いいいいい');

余談

テキストフィールド名の部分にMySQLの予約語が含まれていたりする場合にはバッククォート(日本語キーボードならば @ の上にあります)で囲む

# textフィールドにレコードを入れる
INSERT INTO テーブル名 (`テキストフィールド名`, `テキストフィールド名`) VALUES ('文字列','文字列');
◎質問者からの返答

コードはこれですね。出来たてのテーブル(textフィールド二つで、照合順序をutf8generalciにしただけで何もいじってません)

下記を$test="1"; に変えると正常にinsertされるみたいです。数字だとなぜかできるんです。

また、phpmyadminから挿入すると、正常に動作します。

-------------------------------------------------

$test="test";

mysql_connect( $hostname, $uname, $upass);

mysql_select_db($dbname);

$sql="INSERT INTO tag (tag) VALUES ($test)";

mysql_query("SET NAMES utf8");

mysql_query($sql);

-------------------------------------------------


2 ● きゃづみぃ
●50ポイント ベストアンサー

($test)";

じゃなくて

('$test')";

というように 文字列は '' でくるまないとダメなんじゃないのかな?

◎質問者からの返答

ご回答ありがとう御座います。無事、解決致しました。

くだらないミスを犯していたようです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ