A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
ham_kamoです。
以下のソースで試したところ、エラーになりませんでした。
<?php
$con = mysql_connect("localhost","user1","");
mysql_select_db("test");
$hoge = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
mysql_query(sprintf("replace into tableA set hoge='%s';",$hoge));
mysql_close($con);
?>
実行結果
mysql> select * from tableA;
+-----------------------------------------------------------------------+
| hoge |
+-----------------------------------------------------------------------+
| Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)
$hoge = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
を
$hoge = getenv('HTTP_USER_AGENT');
に変えても同じくエラーにはならずにレコードが挿入されました。
すみません、こちらの環境で再現しないので私もちょっとお手上げです。
バージョンの違いによるものなのかな…。
お力になれずすみません。他に詳しい方がフォローしてくれるといいのですが。
No.5
- 回答日時:
$hoge = "testdata1; testdata2; testdata3";
mysql_query(sprintf("replace into tableA set hoge='%s';",$hoge));
特におかしくはないですね…。
試しに自分の環境で同じ名前のテーブルを作ってPHPから上のコードを実行したら、エラーにならずにちゃんとレコードが追加されました。
mysql> select * from tableA;
+---------------------------------+
| hoge |
+---------------------------------+
| testdata1; testdata2; testdata3 |
+---------------------------------+
1 row in set (0.00 sec)
testdata1やtestdata2の部分の文字列には、実際には'(シングルクオート)が含まれていたりしませんか?
この回答への補足
ham_kamoさんありがとうございます。
実際のtestdata1やtestdata2の部分は
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
な感じのデータです。USERAGENTをデータベースに突っ込もうとすると
USERAGENTの;の部分でエラーが出てreplaceできませんでした。
No.4
- 回答日時:
No.1です。
補足拝見しました。> ・phpスクリプトにてSQL文作成replace文実行
そのSQL作成のコードを記載していただければ、具体的に何かわかるかもしれないので、補足願えないでしょうか。
No.2の方への補足にある、
> Check the manual that corresponds to your MySQL server version for the right syntax to use near 'data2'' at line 1
において、data2の後ろにシングルクオートが2つついているのが気になります。やはりクオートがらみのような気がするのですが。
この回答への補足
ham_kamoさんありがとうございます。
>そのSQL作成のコードを記載していただければ、具体的に何かわかるかもしれないので、補足願えないでしょうか。
$hoge = "testdata1; testdata2; testdata3";
mysql_query(sprintf("replace into tableA set hoge='%s';",$hoge));
こんな感じです。
No.2
- 回答日時:
MySQL 5.0のcommand line clientでは、問題なく実行できました。
>data1とdata2の間のセミコロンでおこられる
具体的に、どんなエラーになるのですか?
chukenkenkouさん、回答ありがとうございました。
コマンドラインで実行したところ、実行できました。
phpスクリプトを組んで、cronで自動実行していたのですが、データが書き込まれていないため、「かねやんMysqlAdmin」というソフトでSQLを実行すると以下のようなエラーが出てしまい、「;」の為と思いこんでいました。
phpからの実行、「かねやんMysqlAdmin」の両方で実行できないが、MYSQLコマンドラインから実行可能ということは何が原因なんでしょうか?
「Check the manual that corresponds to your MySQL server version for the right syntax to use near 'data2'' at line 1」
お教えいただけないでしょうか。
No.1
- 回答日時:
おかしいですね。
MySQLでは別に文字列の中でセミコロンをエスケープしたりする必要はないはずですが。MySQLのコマンドラインから試しても同じような結果になるでしょうか?PHPやPerlなどからSQL文字列を作り出して実行しようとしているのであれば、その時点で先の'(シングルクオート)がPHPやPerlに食われてしまっていて、結果的にセミコロンのところでエラーになっているのではないでしょうか。(それだと別のエラーになりそうな気もしますが…)
ham_kamoさん、回答ありがとうございます。
さきほど、MYSQLのコマンドラインから直接実行すると、replace文が実行できました。今回エラーが出ているのは、PHPからSQL文を作成して実行していたのですが。
・phpスクリプトにてSQL文作成replace文実行
エラーがでてreplaceできません。
・「かねやんSQLAdmin」等のSQLAdminソフトにて実行
エラーがでてreplaceできません。
・MYSQLコマンドラインにて実行
エラーもでず、replace可能でした。
ということはham_kamoさんのおっしゃるとおり、PHPにてつくり出したSQL分のためエラーがでているのでしょうか?
「かねやんSQLAdmin」で実行してもエラーが出るためどうすればいいのか。。。すいませんが、お教えいただけないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLのテーブル作成でハイフン...
-
MySQL エラー Duplicate entry...
-
mysqlのLOADでオートコミットオ...
-
実行時エラー80004005
-
MYSQLのデータに「;」を入力
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
INT型は金額の型に使用するべき...
-
MySQLカラム名は日本語と英数字...
-
シングルクォーテーションとダ...
-
VBAで変数内に保持された二次配...
-
複数行のクエリを、まとめて実...
-
ERROR 1045 (28000) (using pas...
-
.sqlのファイルをそのままコマ...
-
旧filemakerで和暦(令和など)...
-
PEARでレコード数の取得
-
ERROR 1045 (28000)について
-
phpで複数のDBを使用した場合の...
-
MySQL Connector C++について
-
副問合せにLIKE文を使う方法は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブル作成でエラーが出てき...
-
MYSQLサービス停止時にWindows...
-
MySQL エラー Duplicate entry...
-
MySQLのテーブル作成でハイフン...
-
実行時エラー80004005
-
MYSQLのデータに「;」を入力
-
LIMIT で条件を満たしているの...
-
MySQLのエラーコード1064の見方
-
show warningsのファイル出力方...
-
mysqlコマンドにてタイムアウト
-
プログラミングの詳しい人へ
-
MySQL のログ出力方法について ...
-
MySQLのfield数の上限について
-
データベースについて質問させ...
-
mysqlのLOADでオートコミットオ...
-
LOAD DATA INFILE でエラー起き...
-
aes_decryptでsyntax error
-
MySQL+PHPのエラーについて
-
phpMyAdminについて
-
接続ができません
おすすめ情報