2016-04-03 7 views
-3

私はMySQLデータベースの大量の変数を変更するページを持っていますが、これまでのところすべてがうまくいっていますが、単一の論理ゲートは明白な理由で動作しなくなった。PHP/MySQLのクエリが明白な理由で動作しなくなった

私は次のことを確認しました:
- 意図したように、論理ゲートがトリガされ(私はものとなどをエコーすることができます - 変数は、それが
を意図していたように、ゲートの文がある「場合」に掲載し、使用それの中に)。
- データベース接続が確立されました。この論理ゲートの前後でさまざまなタイプのクエリを同じ接続変数で正常に実行しています。
- 接続ユーザーはすべてのPRIVILEDGESを有効にしています。この論理ゲートを取り囲む前述のクエリは、同様の機能を正常に使用しています。

はここで論理ゲートです:

if (!empty($_POST["addqual"])){ 
    $coladqual = $_POST["addqual"]; 
    $sqlf = "ALTER TABLE users ADD UNIQUE ('$coladqual') INT(2) NOT NULL"; 
    $conn->query($sqlf); 
    $sqlc = "INSERT INTO competencebonus (competence,bonus) 
    VALUES ($coladqual,0)"; 
    $conn->query($sqlc); 
} 

私は、複数の変更を試みたが、彼らは私が何をすべきかに関係なく実行していないようです。私はこれらの2つの前と後に他の論理ゲートで少なくとも20の他のクエリを持っています。これらの2つを除けば、まったく動作していません。

EDIT - ここでエラー(エラーレポート構文を提供してくれまし者あなたのすべてに感謝します)

あなたはあなたのSQL構文でエラーが発生しているのです。 'TestAA'の近くで使用する正しい構文については、MySQLサーバのバージョンに対応するマニュアルをチェックしてください)INT(2)NOT NULL UNIQUE '1行目

私には括弧しか閉じないポストインプット(TestAA)の周り。それはどちらかあるいは両方を持っていると思われますか?

私は、構文を変更しようとした次のエラーました:

重複エントリを '0' キーは 'TestAB'

構文をした

$sqlf = "ALTER TABLE users ADD `$coladqual` INT(2) NOT NULL UNIQUE"; 

FINAL EDIT:

これを機能させました。 Jeff Pucket IIの推奨する「NOT NULL」ステートメントを削除しました。何とかこれは括弧の削除とアポストロフィの代わりにバックティックの使用と組み合わせて、そのことを機能させました。 忍耐力を持ってくれた皆さん、ありがとうございました。

+5

エラーチェックが常に優先されます。自己教育は最も強力です。 – Rottingham

+3

クエリが正常に実行されたかどうかを確認する必要があります。何かが失敗した場合、 '$ conn'はそれについて報告することができます。 (また、PDOかMySQLiかを指定する必要があります) – Arjan

+0

MySQLi。 これらのクエリにエラーレポートを追加するにはどうすればよいですか? 私が過去1年間見つけたすべての例は、まったく異なるクエリフォーマットを使用しています。 – noobequaltotrue

答えて

1

一意のNULLでない列で既存の表を変更しようとしているようです。あなたのエンジンがゼロを返さない限り、テーブルにすでに行が存在する場合、これが失敗すると思います。ユニークな制約のために複数のレコードが存在する場合でも、これは失敗します。また、追加する列名が存在しないことを確認してください。

がMySQLiをを使用してエラーを取得するには、試してみてください。 $result = $conn->query($sqlf) or die($conn->error);

+0

私はUNIQUEを使わずに、UNIQUEを使わず、UNIQUEなしで、両方を使わずに試しました。 3つのバリエーションのいずれにおいても機能しません。 また、はるかに「単純な」INSERT INTOクエリも機能しません。 – noobequaltotrue

+0

さて、戻ってきました。申し訳ありませんが、それは私のタイムゾーンで真夜中であり、私は10時間まっすぐにプログラミングされていた、私の脳は揚げた! エラーコードをお寄せいただきありがとうございます。すぐにお試しください。 – noobequaltotrue

0

のユニークな "制約は、クエリの最後に行くべき

$sqlf = "ALTER TABLE users ADD ('$coladqual') INT(2) NOT NULL UNIQUE"; 

エラーチェックは、あなたがしているのMySQLのどのような味に依存します実行中

+0

動作しませんでした。私はあなたが "味"を意味するかどうかはわかりません。私はWAMP設定を使用していますので、ソフトウェアを調べすぎていませんでした。 – noobequaltotrue

+0

私は主にMySQLiとMySQLを考えていました。 MySQLのエラー報告のドキュメントは、http://php.net/manual/en/function.mysql-error.php です。このドキュメントのように、あなたの構文は通常、MySQLiを使用しているようです。http://php.net/manual/en /mysqli.error.php MySQLデータベースでMySQLi関数を実行している可能性はありますか? – dg4220

+0

この方法で試してみてください。 $ add_col = mysql_query($ sqlf、$ conn); echo mysql_error($ add_col); – dg4220

関連する問題