• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UPDATE文のWHERE句について)

UPDATE文のWHERE句について

Yune-Kichiの回答

  • ベストアンサー
回答No.2

$_GET['sid']がnullの場合,$sidの値が設定されません。 その結果,$sqlのWHERE節が,「sid=」となるため,エラーになっているのかと思います。 このあたりは,$sql自体をechoするなりしてみると理由がわかりやすくなるかと思います。 # mysql関数の利用とか$updateという文字列型っぽい物を変数展開で生成しているとか,問題点は色々ありそうですが。

beterugius
質問者

お礼

ご回答どうもありがとうございました。

beterugius
質問者

補足

$sid をhidden属性で送って、POSTで受けたら、ちゃんと動作しました。 ご指導どうもありがとうございました。

関連するQ&A

  • MySQL UPDATEができない

    PHP+MySQLをやり始めて、テーブルのUPDATE(更新)ができなくてこまっています。 <?php if($contact=mysql_connect("host","admin","test")){ echo "サーバに接続しました"; } mysql_select_db("databesetest", $contact); $query = "UPDATE list SET name = color WHERE id = 2"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); if($result){ echo"更新に成功しました"; }else{ echo"更新に失敗しました"; } ?> とすると Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' SET name = color WHERE id = 2' at line 1 というエラーが出るのです。 シングルコーテーションがダブルコーテーションの問題のような気がしたので、いろいろと変更してみたのですが。できませんでした。 お教え願えませんでしょうか?

    • ベストアンサー
    • PHP
  • WHERE句内でプライマリキーの検査ができない

    こんにちは。mySQL初心者です。 例えば、「sample」というDBに以下の3つのフィールドのあるテーブル「text」があるとします。 (実際には、DATETIME型のフィールドも含めて20列あります) key => 整数型で、プライマリキー&オートインクリメントを設定 status => テキスト型(UTF-8) note => テキスト型(UTF-8) ここで、「SELECT * FROM text WHERE key=1」というSQLで1つ目のレコードを取得しようとすると、「#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key=1 LIMIT 0, 30' at line 1」というエラーが出てしまいます。 「SELECT * FROM text WHERE status='sample_01'」や「SELECT * FROM text WHERE note='test entry'」というSQL文ならちゃんとデータを取得できるのですが、「WHERE key=1」のようにプライマリキーで検索しようとするとエラーになるのは何故でしょうか。 どなたか見当が付くかたがいらっしゃいましたら、教えていただけないでしょうか。 よろしくお願いします。 <環境> XAMPP Ver.1.7.4で、mySQLは Ver. 5.5.8です。

    • ベストアンサー
    • MySQL
  • PHPとMYSQLでデータ登録

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 上記のようにエラーでました。分かる方いらっしゃいましたらよろしくお願いします。 ソースは下の通りです。 <?php $con = mysql_connect("localhost","root","matsushima") or die(mysql_error()); mysql_select_db("koukou") or die(mysql_error()); $sql = "insert into area(name_area) values('".$_POST[name_area]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($con);//切断 ?> <html> <head> <title>登録完了画面(サンプルリスト)</title> <meta name="keywords" content="入力フォーム,確認画面,サンプル"> </head> <body> <p>

  • [初歩] はじめの2文字を切り取って真偽を判定するWHERE文

    例えば、テーブル:MYTABLE、カラム:CITYに、 横浜市緑区.... 川崎市宮前区... 藤沢市辻堂... …などと登録されているとします。ここで、SQL文で (1) はじめの全角2文字が「横浜」である (2) はじめの全角2文字が「横浜」でない(横浜以外) というWHERE条件をそれぞれ作りたいのですが。phpMyAdminで: (1) SELECT CITY FROM MYTABLE WHERE SUBSTRING( MYTABLE.CITY, 0, 4 ) = '横浜' ) (2) SELECT CITY FROM MYTABLE WHERE SUBSTRING( MYTABLE.CITY, 0, 4 ) != '横浜' ) などと実行してみたら、 #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 0, 30' at line 1 などとエラーになります。何が誤っていますでしょうか?

    • ベストアンサー
    • MySQL
  • Mysql どこに間違いがありますか?

    define( 'DB_NAME', 'MyDatabaseName' ); これがエラーになります。 どうしてでしょうか? ご回答のほど、よろしくお願い申し上げます。 尚、ダブルクォーテーションマークにしてもエラーになりました。 mysql> define( 'DB_NAME', 'MyDatabaseName' ); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'define( 'DB_NAME', 'MyDatabaseName' )' at line 1

    • ベストアンサー
    • MySQL
  • PHP+MySQLで文が正しいのに実行されません

    $s_id = "guest"; $s_pw = "guest"; この状態で SELECT * FROM account WHERE id='$s_id', pass='$s_pw' を実行すると You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' pass='guest'' at line 1 というエラーが発生します。 idもguestもあるのになぜこのようなエラーが出てしまうのでしょうか?

    • ベストアンサー
    • MySQL
  • EclipseでMySQLにDELETE文を二つまとめて送れない

    環境 WindowsXP Eclipse3.4 MySQL5.1 Server str="DELETE FROM table1 where id=28;DELETE FROM table2 where id=28";という文を実行したのですが 動作しなくて困っています。分かる方がいましたら教えてください。 よろしくお願いします。 st.executeUpdate(str);を利用し、DELETE文ひとつの場合は実行できました。 MySQLServerに直接入力しても実行できました。 しかしEclipseから読み込んで実行すると com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM table2 where id=28' at line 1 というエラーがでてわかりません。 分かる方がいましたらよろしくお願いします。

    • ベストアンサー
    • Java
  • like文の書き方を教えてください。

    テキストボックスを作成して入力した値がデータベースに 格納されている場合表示されるSQL文を書いていますが syntaxエラーになってしまい原因がわかりません。 String name = request.getParameter("name"); //入力された名前 String sql = new String(); <%-- SQL文 --%> sql += " select * from data "; sql += " where name "; sql += " like" + "('%" + s_name + "%')"; sql += " ) "; <input type="text" name="name" value=""> //textBox エラー表示 8番目: SQL = select * from data where name like('%i%') ) 9番目: ResultSetに格納失敗 : java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1  となってしまいます。 コマンドプロンプト上で select * from data where name like('%itou%'); この場合はちゃんと表示されます。 お分かりになる方よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • PHP+MySQL SQL文を外部ファイル化したい。

    表題のとおりなのですが… $result = mysql_query( "SELECT * FROM FOO" ); では、動作しています。 このセレクト文を、selectFOO.sql として外部ファイル化し、 (ファイルの中身は、「SELECT * FROM FOO」) $result = mysql_query( selectFOO.sql ); とすると、 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'selectFOO.sql' at line 1 が返ってきます。 SQL文が正しくないよ。マニュアル見てね。 と言われてるのは分かるのですが、 マニュアルのどこを見れば良いのかさえ分かりません。 助けてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • SQLエラー

    検索システムの検索結果の分割をしようとしています。 しかしどうしてもSQL文にエラーがでてしまいます。 SELECT * FROM shops where (area='◯◯◯') ORDER BY id DESC limit0, 10 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit0, 10' at line 1 該当するSQL文は以下になります。 $query = "SELECT * FROM shops"; $where = array(); if (isset($_GET['area'])and($_GET['area'] !== '')) { $where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area'])); } if (count($where) <> 0) { $query .= ' where ' . implode(' and ', $where) . ' ORDER BY id DESC '; }   $query .= "limit" . $page_num*10 . ", 10" ; limit句の使い方等間違いはないのかなと思うのですが、いかがでしょうか? アドバイスご教示いただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP