2017-01-10 8 views
-1

私はprereg、asdoc、asdocpという3つのテーブルを持つテーブルに変数を送信する際に問題があります。患者テーブルがpreregである患者に医師を割り当てます他の2つのテーブルは医師のテーブルです。問題は次のとおりです:preregテーブルからの$ fnameがasdoc、asdocp、および2の両方のテーブルに送信されます。他のテーブルへの入力を複製する

私がしたいのは、$ fnameの値が1つのテーブルだけに送信され、医者の名前が5で重複すると、mstat/pstatテーブル名がいっぱいになります。

$fnamechk = @mysql_query("SELECT * FROM prereg WHERE fname = '$fname'"); 
if(mysql_num_rows($fnamechk) == 0) { 
    $query = "INSERT into prereg (fname, lname, mname) 
    VALUES ('$fname','$lname','$mname')"; 

    $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    echo "<strong>"; 
    echo "<script>alert('Successfully added to in patient');document.location='patient.php'</script>"; 
    echo '</script>'; 


    // DOOOOOOOOOOOOOOCTORSSSSS -------------------- 
    //MEDICAL DOCTOR 
    $fnamechkkk = @mysql_query("SELECT * FROM asdoc WHERE docname = '$docname'"); 
    if(mysql_num_rows($fnamechkkk) == 4) { 
     mysql_query("UPDATE asdoc SET mstat='Full' Where docname='$docname' AND mstat='available'"); 

    }else 
     $fnamechkk = @mysql_query("SELECT * FROM asdoc WHERE docname = '$docname'"); 
    if(mysql_num_rows($fnamechkk) <= 5) { 
     $query = "INSERT into asdoc (docname, afname) 
    VALUES ('$docname','$fname')"; 
     $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    } 
    // MEDICAL DOCTOR END-------- 

    //PEDRIATIC DOCTOR 
    $fnamechkkk = @mysql_query("SELECT * FROM asdocp WHERE pdoc = '$pdoc'"); 
    if(mysql_num_rows($fnamechkkk) == 4) { 
     mysql_query("UPDATE asdocp SET pstat='Full' Where pdoc='$pdoc' AND pstat='available'"); 

    }else 
     $fnamechkk = @mysql_query("SELECT * FROM asdocp WHERE pdoc = '$pdoc'"); 
    if(mysql_num_rows($fnamechkk) <= 5) { 
     $query = "INSERT into asdocp (pdoc, pfname) 
    VALUES ('$pdoc','$fname')"; 
     $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    } 
    // PEDRIATIC DOCTOR END-------- 

私のコードはこのスクリプトでは間違っています。どうかこの問題を解決するにはどうすればいいですか?ありがとうございました。これは私のテーブルに何が起こるか:

+0

**警告**:PHPを学んでいるだけの方は、[mysql_query](http://php.net/manual/en/function.mysql-query.php)インターフェイスを使用しないでください。それはPHP 7で削除されたのでとてもひどいと危険です。[PDOのようなものは学ぶのが難しくない](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /)と[PHP The Right Way](http://www.phptherightway.com/)のようなガイドがベストプラクティスを説明しています。あなたのユーザーデータは**適切にエスケープされていない**(http://bobby-tables.com/php.html)であり、[SQLインジェクションのバグ](http://bobby-tables.com/)があります。悪用される。 – tadman

+0

**警告**: '@ '演算子でメソッドを呼び出すときにエラーを抑制しないでください。何かが間違っていたら、それについて知りたいし、是正措置を講じるか、ユーザーに役立つメッセージを表示するか、問題を記録するか、それ以上のことをする必要があります。また、深刻な問題を指摘しようとしているエラーを無視すると、このようなデバッグの問題がさらに複雑になります。 – tadman

+0

インデントも完全に制御不能です。あなたはこのものを整理しておくか、ここで何が起こっているのかを決して知らせることはできません。 – tadman

答えて

0

あなたのコードロジックはあなたの質問に言ったことをしません。それは次のようになります。

if (num_rows < 5) { 
    insert new row 
} elseif (num_rows == 5) { 
    set status to full 
} 

だから、PHPは次のよ​​うになります。あなたはSELECTクエリあなたがカウントを取得するたびに繰り返す必要はありません

$fnamechkkk = mysql_query("SELECT COUNT(*) AS count FROM asdoc WHERE docname = '$docname'"); 
$row = mysql_fetch_assoc($fnamechkkk); 
if ($row['count'] < 5) { 
    $query = "INSERT into asdoc (docname, afname) VALUES ('$docname','$fname')"; 
    $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
} elseif ($row['count'] == 5) { 
    $query = "UPDATE asdoc SET mstat='Full' Where docname='$docname' AND mstat='available'"; 
    $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
} 

。また、SELECT *ではなくSELECT COUNT(*)というクエリを実行し、その後にmysql_num_rows()というクエリを実行することをお勧めします。

+0

私は私の質問に、私のテーブルで起こる画像を追加 – cuysooo

+0

私はあなたの編集に従うが、まだ同じ私はこのコードを置く必要がありますか?私は最初の$ fnameのチェックをやっています。私はちょうど1テーブルにこれを入力することですが、彼らは2テーブルで入力しています。私のテーブルの写真が一番上に追加されます。 – cuysooo

+0

私はその質問の部分を理解していません。 'asdoc'や' asdocp'に追加するかどうかはどうしたら分かりますか? – Barmar

関連する問題