2017-08-22 13 views
0

は、私はMOZILLA/5.0 (COMPATIBLE; SEMRUSHBOT/1.2~BL; +HTTP://WWW.SEMRUSH.COM/BOT.HTMLのようなユーザエージェントが含まれますこのMySqlクエリを修正するにはどうすればよいですか?

UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, " . $MyString . ")  

$MyStringでMySQLのテーブルを更新しようとしていますが、私は構文エラーを取得していたクエリがありますか?フィールドはTEXT NULLと設定され、デフォルトはNULLです。

助けてください。

私がやってみたいことは、データベースのテキストフィールドにテキストを追加することです。テキストは上記のユーザーエージェントとまったく同じです!

敬具、SQLで サイモン

+1

エラーメッセージは何ですか?更新しようとしているテーブルの名前は何ですか? – Lennart

+0

あなたの質問を更新することはできますか? – Noob

+0

ここで私の質問にTABLEを入れました。実際の行はuAgentを読み込みます。エラーはUPDATE 'ST_uAgent'です。SETエージェント= CONCAT(エージェント、MOZILLA/5.0(互換性あり、DOTBOT/1.1; HTTP://WWW.OPENSITEEXPLORER.ORG/DOTBOT、[email protected])) – Silo

答えて

0

:あなたのクエリは、おそらく何かのようになります。

"UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, '". $MyString ."')" 

このMySQLがないと、渡すデータの解釈方法がわかりません。

しかし、あなたがここで試していることは非常に危険であり、SQLインジェクションを広く開いています。代わりにmysqliのやPDOによって提供されるように

は、パラメータ化/プリペアドステートメントを使用することを検討してください - ここを参照してください:How can I prevent SQL injection in PHP?

+1

これはすばらしいことですが、スペースやキャリッジリターンがないので、すべてが1つの長い文字列として読み取られます。私はそれを指摘してくれたPDOに感謝します。 – Silo

+1

私が同意するならば、二重引用符を使用してください。これはあなたが連結するために使用しているものです。 –

2

文字列の区切り文字は「は、私は、問題のクエリは、PHPとSQLの間のミックスのいくつかの種類であることを前提としています。私は、最初にSQLを正しいものにすることから始めることをお勧めします。その後、PHPに組み込みます。あなたは、文字列の周りに''引用符を配置する必要があり

UPDATE ST_uAgent 
    SET agent = CONCAT(agent, 'MOZILLA/5.0 (COMPATIBLE; DOTBOT/1.1; HTTP://WWW.OPENSITEEXPLORER.ORG/DOTBOT, [email protected])'); 
0

を私は問題は「区切り文字であると思います。

("UPDATE ". TABLE_PREFIX ." TABLE SET FIELD = CONCAT(FIELD, '". $MyString ."')"); 

それはちょうど推測です:区切り文字を排除 。

関連する問題