2016-10-26 2 views
1

コンテンツDB(Joomla)のイントロフィールドを、約1200行のHTMLコード全体で更新しようとしています。コンテンツテーブルに全HTMLコードを挿入

try { 
     $MyDBConn = new PDO("mysql:host=localhost;port=3306;dbname=$MyDBName", $MyDBUser, $MyDBPass); 
     // PDO can throw exceptions rather than Fatal errors, so let's change the error mode to exception 
     $MyDBConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     //$MySQL = "UPDATE jso_content SET introtext = '$MyTeamHTML_FR' WHERE titel like '%$MyTeamTitel' and alias like '%$MyTeamAlias'"; 
     $MySQL = "UPDATE jso_content SET introtext = :INTRO WHERE alias = :ALIAS"; 
     $MyStmt = $MyDBConn->prepare($MySQL); 
     $MyStmt->execute(array(':INTRO' => $MyTeamHTML_FR, ':ALIAS' => $MyTeamAlias)); 
    } 
    catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage()."\n"; 
    } 
    $MyDBConn = null; 

更新が厳しく実行されず、理由がわかりません。 これをPHPMyAdminで手動で行うと、テキストコードを挿入できます。

前の記事で同じステートメントを使用しましたが、これはexecute()の代わりにexec()を使用している間にエラーが発生したため解決されました。

もう1つのコメントはSQLインジェクション攻撃であり、私はこれを解決したいと考えています。

は、ご支援

よろしく

ローラン

+0

エラーメッセージは何であるローランをありがとう! –

+0

エラーは何ですか? – Sharlike

+0

'execute()'の結果は何ですか? – chris85

答えて

0

のための書き込み可能なディレクトリに合格することを確認します。私は、これはそれを変更した後

"UPDATE jos_content SET introtext = :INTRO WHERE alias = :ALIAS" 

をbwの必要があります

"UPDATE jso_content SET introtext = :INTRO WHERE alias = :ALIAS" 

にここにタイプミスがあったことを後で最後かもしれないが、実現し、スクリプトが渡されました。

とにかく、あなたのコメントを 乾杯

0

をありがとう、私はあなたのコードを少し変更して、例外をログに記録するためのコードを追加しました。これは、エラーが発生した場合にデバッグして解決するのに役立ちます。

try { 
    $MyDBConn = new PDO("mysql:host=localhost;port=3306;dbname=$MyDBName", $MyDBUser, $MyDBPass); 
    // PDO can throw exceptions rather than Fatal errors, so let's change the error mode to exception 
    $MyDBConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    //$MySQL = "UPDATE jso_content SET introtext = '$MyTeamHTML_FR' WHERE titel like '%$MyTeamTitel' and alias like '%$MyTeamAlias'"; 
    $MySQL = "UPDATE jso_content SET introtext = :INTRO WHERE alias = :ALIAS"; 
    $MyStmt = $MyDBConn->prepare($MySQL); 
    $MyStmt->execute(array(':INTRO' => $MyTeamHTML_FR, ':ALIAS' => $MyTeamAlias)); 
} 
catch(PDOException $e) { 
    $h = fopen('<path_to_a_writable_dir>/error.log', 'a+'); 
    fwrite($h, var_export($e, true)); 
    echo "Connection failed: " . $e->getMessage()."\n"; 
} 
$MyDBConn = null; 

そのポストのため申し訳ありませんpath_to_a_writable_dir

+0

私は知っています。ロギングは私の弱点です、たとえ私が覚えていても、私は忘れています:-) –

関連する問題