0

update ステートメントで変数をテストし、データベース接続が確立されているかどうかを確認しましたが、クエリが実行されません。コードのエラーを教えてください。

for($i=0; $i <= $numcourses; $i++){
    echo '<div class="new'.$i.'" id="new'.$i.'"><label>'.$course_names[$i].'</label>
    <input name="edit'.$i.'" type="submit" value="Edit" /><input name="delete'.$i.'" type="submit" value="Delete" /><br /></div>';
    $name="edit".$i;    
    if (isset($_POST[$name])){
        echo '<input name="text" type="text" value="'.$course_names[$i].'" /><input name="save'.$i.'" type="submit" value="Save"/>';
    }   
    $name2="save".$i;
    if (isset($_POST[$name2])){
        include "includes/open.php";
            $newname=($_POST['text']);
            $int=$i+1;
            $query = "UPDATE course SET cname = '".$newname."' WHERE cid = '".$int."'";
            mysql_query($query) or die(mysql_error());
            include "includes/close.php";
    }
}

更新: ありがとう、Marc B、追加するor die(mysql_error());と、コードにエラーが表示され、すべてが再び機能し、軌道に戻りました。

4

5 に答える 5

3

クエリ呼び出しでエラー処理がありません:

mysql_query($query) or die(mysql_error());
                   ^^^^^^^^^^^^^^^^^^^^^^

クエリの実行に問題があるかどうかがわかります。メタ レベルでは、SQL インジェクション攻撃に対して無防備であるため、コードをさらに進める前に、それについてよく読んで問題を修正することをお勧めします。

于 2012-05-03T14:42:15.793 に答える
2
$query = "UPDATE course SET cname = '".$newname."' WHERE cid = '".$int."'";

cID は整数ですか? updateステートメントでは、私には文字列のように見えます。すべてのクエリをエコーし​​、データベースで直接実行して有効性を確認してください

于 2012-05-03T14:47:23.533 に答える
1

多分これの代わりに:

if (isset($_POST[$name2]))

これを試して:

if ($name2!="")
于 2012-05-03T14:51:26.160 に答える
1

データベースにはどこに接続しますか??

を使用してデータベースに接続し、 ..mysql_connect(string hostname, string username, string password');を使用してデータベースを選択した後、クエリを実行します。mysql_select_db

于 2012-05-03T14:46:57.287 に答える
1

;まず、余分なものを削除する必要があります$name="edit".$i;;

では、どのように値を投稿しますか? コードに属性がない<form>ため、投稿できません。

また、すべてが for ループになっています。$newname=($_POST['text']);設定されることはありません。

于 2012-05-03T14:49:35.037 に答える