2011-08-14 30 views
0

今日私はPHPに大きな問題を抱えています。私はMySQLデータベースの行を更新しようとしています。最大の問題は、phpMyAdminに直接挿入するとクエリが機能するためですが、PHPスクリプトでは機能しないためです。更新クエリが機能しません

は(これは$のSQLQueryの値である)私のクエリを実行します:それは、アレイから来るので、私のスクリプトで

UPDATE my_table SET id = '64', title = 'test', another_column = 'asdasdasdasd 2', category = '1', author = '1', status = '0', column = '0', date_created = '2011-08-13 15:33:54' WHERE id = '64' 

を、私は「SET」と「WHERE」との間にコードを生成するためにループを作成しました。また

、接続が開かれている場合、あなたが私に尋ねる前に、私は(下記)は、このコードをチェックし、「開く」戻ってき:クエリを実行する

if (!$conn->connection) echo "closed"; 
else echo "opened"; 

は私のスクリプト:

if (mysql_query($sqlQuery, $conn->connection)) { 
    $sqlResult = array(
     "status" => "ok", 
     "result" => "edited" 
    ); 
} else { 
    $sqlResult = array(
     "status" => "error", 
     "result" => "$sqlQuery" 
    ); 
} 

常に "else"配列(status = errorおよびresult = $ sqlQuery)を返します。

+2

のようなバッククォートで囲む必要がありますMySQLでの予約語であるため、あなたのエラーは、おそらくcolumn = '0'によって引き起こされる[ 'mysql_error () '](http://php.net/manual/en/function.mysql-error.php)を参照してください。 – Sampson

+0

好奇心を要して、MySQLデータベース(コマンドラインかMySQL Workbenchのいずれか)に対してクエリを直接実行しようとしましたか? –

答えて

2

id = '64' WHERE id = '64'はなぜ設定していますか?とにかくIDはINTなので、引用しないでください。

さらに、"result" => "$sqlQuery""result" => $sqlQueryに変更し、デバッグを支援するvar_dump($sqlQuery)を実行してください。

+0

+1それは..少なくともIDがintであることを願っています:P – JustDanyul

+0

私はあなたが前に言ったことをtryedしました(is_numericがチェックされ、引用符が取り除かれるループを実行します)。 –

+0

MAMPはデフォルトでエラーを隠すように設定されています。私はそれを知らなかった! 申し訳ありません。 エラーが表示されます(このチュートリアルを使用した後:http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp)エラーを修正します。 問題は、接続が閉じられたためです。私は以前を閉じて、新しいクエリを実行しました。うまくいく! ありがとうございました! –

1

idフィールドは、自動インクリメントのプライマリキーですか?もしそうなら、それをあなたの問い合わせに設定することはできません(あなたのWHERE句の一部なので、とにかくするべきではありません)。一般に、実際に変更されているフィールドのみを更新する必要があります(主キー値は、通常、更新の一部として変更しないでください)。

+0

MAMPはデフォルトでエラーを隠すように設定されています。私はそれを知らなかった! 申し訳ありません。 エラーが表示されます(このチュートリアルを使用した後:http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp)エラーを修正します。 問題は、接続が閉じられたためです。私は以前を閉じて、新しいクエリを実行しました。うまくいく! ありがとうございました! –

3

あなたは、デバッグしようとする前に出力するecho mysql_error();エラーメッセージをする必要がありますが、columnあなた`column` = '0'考慮

+0

私はいくつかの列の名前を変更しました。"my_table"、 "another_column"、 "column"は実際の名前ではありません(ただし、実際の名前は予約されていないと思います)。 –

+0

@ルーカスよろしくお願いします。 mysql_error()の出力を表示できますか? – Paulpro

+0

MAMPはデフォルトでエラーを隠すように設定されています。私はそれを知らなかった! 申し訳ありません。 エラーが表示されます(このチュートリアルを使用した後:http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp)エラーを修正します。 問題は、接続が閉じられたためです。私は以前を閉じて、新しいクエリを実行しました。うまくいく! ありがとうございました! –

関連する問題