2012-05-03 28 views
0

更新ステートメントの変数をテストし、データベース接続が確立されているかどうかを確認しましたが、クエリは実行されません。MySQL/PHP更新クエリが実行されていません

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"; 
    } 
} 

更新:ありがとうマルク・B、or die(mysql_error());を追加することは、私に私のコードでエラーを示したすべてが再び動作し、私は再び軌道に思います。クエリの実行に問題がありますかどうかを言うだろう

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

を:あなたのクエリの呼び出しに

+0

はあなただけのデータベース(サンセリフPHP)でクエリを実行しようとしたことがありますか?どのようなエラーメッセージが表示されますか? – amaidment

+0

この問題の解決に役立つ情報が必要な場合は、私にお知らせください。 – grasshopper

+0

そのため、私はエラーメッセージを尋ねました... – amaidment

答えて

2

あなたは何のエラー処理を持っていません。メタレベルでは、あなたはSQL injection attacksへと広く門戸を開いています。それでは、コードを読む前に、それについて読んで問題を修正するほうがよいでしょう。

+0

Aaaah、ok、知らなかった。私はあなたのコードを追加し、 "No database selected"を投げるので、おそらく接続は確立されていませんでした。私はそれを働かせることができるかどうかを見に行く、更新されます。 – grasshopper

+0

その場合、 'mysql_select_db()'呼び出しが行方不明になります。まったく接続していない場合は、「接続しない」とか同様のことを言うでしょう。問合せの呼び出しが成功したとは決して考えないでください。 SQL文そのものが100%有効であっても、何かが爆発して失敗するかどうかチェックするのは余りにも多くの理由があります。 –

1

ここでデータベースに接続しますか?データベースに接続し、mysql_select_dbを使用してデータベースを選択した後、クエリを実行するための

使用mysql_connect(string hostname, string username, string password'); ..

+0

私はインクルードで接続を確立しましたが、エラーの原因となったコードから抜けていました。 – grasshopper

2
$query = "UPDATE course SET cname = '".$newname."' WHERE cid = '".$int."'"; 

は、CIDは整数ですか? UPDATE文では、文字列のように私には見えます、あなたのDBに直接それを実行することにより、すべてのクエリをエコーし​​、妥当性をチェックしてみてください

1

まず、あなたはどのように行う、そして、$name="edit".$i;;

に余分な;を削除する必要があります値を投稿しますか?あなたのコードには<form>という属性がないので、投稿することはできません。

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

1

たぶん、代わりにこの:

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

これを試してみてください。

if ($name2!="") 
関連する問題