1

ユーザー名/パスワードをPHPファイルに投稿しようとしているので、inner joinそれらの詳細を使用してユーザーテーブルからuid- (ユーザーID)を取得できます。コマンドの句で、 payidテーブルの識別子として使用します。動いていない。誰かが私がどこで間違っているのかアドバイスできますか?WHEREINSERT

if(isset($_POST['password']) && isset($_POST['username']) && isset($_POST['rates'])) {              
         $con = mysql_connect("localhost","root","");
         if (!$con) {
            die ("Could not connect: " . mysql_error());
            } else{
            mysql_select_db("council", $con); 
            $result = mysql_query('SELECT pid FROM payid INNER JOIN user ON user.uid = payid.uid WHERE user.username = " $_POST[username]" AND user.password =" $_POST[password] "');
            $pid = $result['pid'];
            if(isset($pid))
                $result = mysql_query("INSERT INTO fees (rates, pid) VALUES ('$rates',  '$pid')");
                if(!$row = mysql_fetch_array($result)) {    
                echo "<div id='t'>Invalid details please try again - use back arrow to return to form. </div>";
                                header ("Location: domRates.html");
                                }   
            if($row = mysql_fetch_array($result)) {
            header ("Location: services.html");
            }
        }
mysql_close($con);
4

3 に答える 3

0
$username = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['password']);
$query = "SELECT `pid` FROM `payid` INNER JOIN `user` ON `user`.`uid` = `payid`.`uid` WHERE `user`.`username` = '".$username."' AND `user`.`password` = '".$pass."'";
    $result = mysql_query($query);

列名をバッククォートで囲むことをお勧めします。PHP 変数をクエリに入れるときは、一重引用符を開き、二重引用符で連結します。

于 2013-06-07T17:41:08.610 に答える
0

クエリステートメントの書き方が悪いと思います。

これを試して:

$result =  mysql_query('SELECT pid FROM payid INNER JOIN user ON user.uid = payid.uid WHERE user.username = \'$_POST["username"]\' AND user.password =\'$_POST["password"]\'');

またはこれ:

$result =  mysql_query("SELECT pid FROM payid INNER JOIN user ON user.uid = payid.uid WHERE user.username = '". $_POST["username"]. "' AND user.password ='" . $_POST["password"]. "'");

また、2 番目のクエリ (INSERT) は、一重引用符を削除して変更する必要があります。フィールド「rates」と「pid」は varchar またはテキストではないためです。それらは数値でなければなりません (int または double):

$result = mysql_query("INSERT INTO fees (rates, pid) VALUES ($rates,  $pid)");

これら 2 つのクエリは機能しますが、SQL インジェクションに対して脆弱です。また、mysql_ は非推奨です。

于 2013-06-07T17:36:22.840 に答える