2017-11-23 26 views
-1
function Writeform($name,$type,$num,$abroad,$datein,$cmnd,$address,$room_name){ 
    global $conn; 
    $query= "INSERT INTO form 
    (Guest_name, Guest_type, Guest_num, Guest_abroad, datein, Guest_CMND, Guest_Address, room_name) VALUES 
    ('$name', '$type','$num','$abroad','$datein','$cmnd','$address','$room_name')"; 
    if(mysqli_query($conn,$query)){ 
     echo " added !"; 
     $sql="UPDATE room r INNER JOIN form f ON r.room_name=f.$room_name SET r.room_status='not avaliable'"; 
     if (mysqli_query($conn, $sql)) { 
      echo " Record updated successfully "; 
      } 
      else{ 
       echo "Couldn't Update !!"; 
      } 
    } 
    else{ 
     echo "Couldn't Add!!"; 
    } 
} 

データベースに挿入して同時に更新しようとしていますが、追加され続けて更新できませんでした。同時にデータをデータベースに挿入して更新する

+1

2番目のクエリ 'ON r.room_name = f。$ room_name'にはドル記号を使用しないでください。 '$ room_name'変数ではなく、テーブルフィールドをチェックしています。 –

+1

エラーをチェックする方法はありますか? 'echo mysqli_error($ conn);' – nogad

+0

あなたのデータベース、構造体(命名規則)はまあまあです。例えば、 'Guest_name、datein、Guest_CMND、Guest_Address、room_name'のように、いくつかの上位のものはいくつかあります。 UnixではDBが大文字と小文字を区別しますが、Windowsでは大文字と小文字が区別されます。私が正しくリコールすれば。 – ArtisticPhoenix

答えて

2

UPDATEクエリのテーブルに参加する必要はありません。

$sql = "UPDATE room SET room_status = 'not available' 
     WHERE room_name = '$room_name'"; 

しかし、準備された文を使用する方がよいでしょう。

$sql = "UPDATE room SET room_status = 'not available' 
     WHERE room_name = ?"; 
$stmt = mysqli_prepare($conn, $sql); 
mysqli_stmt_bind_param($stmt, "s", $room_name); 
if (mysqli_stmt_execute($stmt)) { 
    echo "Record updated successfully!"; 
} else { 
    echo "Couldn't update!!"; 
} 
+0

あなたはこれを見ましたか、私はその奇妙な 'ON r.room_name = f。$ room_name'と思っていますが、奇妙なスキーマが進行していることを暗示しているかもしれません。それでも "SQL"を再読み込みする必要はありません。 – ArtisticPhoenix

+0

@ArtisticPhoenix私はそうは思わない。彼はちょうど 'form'に行を挿入しました。それは' room_name'列を持っています。動的列名はないようです。 – Barmar

+0

そして彼は '$ room_name'の値をその列に挿入しました。 – Barmar

関連する問題