2012-01-05 82 views
0

我對INSERT SQL語句有問題。它什麼都不做! (並沒有顯示任何錯誤)。 當我印刷$ qry時,它看起來很好。 可能是什麼問題? 這是代碼:INSERT語句不工作! (PHP + MYSQL)

<?php 
include('conn.php'); 
$result=mysql_query("SET NAMES utf8 COLLATE utf8_general_ci",$mysql_link); 
$result=mysql_query("SELECT * FROM users where userID=".$_SESSION['IDENT'],$mysql_link); 
if (!$result) 
{ 

    echo "ERROR: error occured in MySQL query."; 

} 
else 
{ 

    if(mysql_num_rows($result)==1) 
    { 

    //This will be shown only to registered users. 
    while ($row=mysql_fetch_array($result)) 
     { 
      if (($row['userRank']==100)||($row['userRank']==10)) 
       { 
        $qry="INSERT INTO users (NickName, username, userpass, userEmail, userRank, userOOlamR, userPhone, userPhone2, userStr, userCity, userMikud, userOOlamID) VALUES ('" . $_POST['nname'] . "', '" . $_POST['username'] . "', '" . md5($_POST['userpass']) . "', '" . $_POST['email'] . "', 2, 1, '" . $_POST['cellphone1'] . "', '" . $_POST['cellphone2'] . "', '" . $_POST['street'] . "', '" . $_POST['city'] . "', " . $_POST['mikud'] . ", " . $_POST['oolam'] . ")"; 
        $res=mysql_query($qry ,$mysql_link); 
        ?><div align="center"> 
        <table width="50%" height="20%" style="Border-Style:dotted;Border-Width:1px;Border-Color:a01220;background-color: rgba(190, 200, 230, 0.5);"> 
        <td><div align="Center"><font face="Arial" size="2" color="Black"> SUCCESS!<br></div></td> 
        </table> 
        </div><div align="left"> 
        <?php 
        echo $qry; ?> 
        </div><?php 
       } 
      Else 
       { 
        //SECURITY 
       } 



     } 
    } 
} 
include('cconn.php'); 
?> 

問題是我在,我沒有在我的INSERT語句把所有的表中的另一領域。

+3

您的縮進樣式是可怕的。將大括號放在與它們所屬的控制語句相同的縮進級別上。除此之外,您的大型if..else塊可以進行優化,您需要修復代碼中的SQL注入問題。你可能想考慮不使用多年不贊成使用的HTML元素('')。 – ThiefMaster 2012-01-05 01:25:20

+0

至於身份識別風格,對不起,我是PHP的新手。我只是想它工作,然後繼續sql注入問題......它只是沒有添加任何數據庫... – 2012-01-05 01:28:41

+0

你確定你的輸入沒有終止查詢?您可能會因爲盲目接受會話和發佈查詢中的數據而被安全授課。看看mysql_real_escape_string – 2012-01-05 01:29:55

回答

2

在您的查詢這裏的錯誤線..

$ QRY =「INSERT INTO用戶(暱稱,用戶名,爲userpass,USEREMAIL,userRank,userOOlamR,USERPHONE,userPhone2,userStr,userCity,userMikud,userOOlamID)VALUES (''。$ _POST ['nname']。'','「。$ _POST ['username']。'','」。md5($ _ POST ['userpass'])。'','「。$ _POST ['email']。'',2,1,'「。$ _POST ['cellphone1']。」','「。$ _POST ['cellphone2']。'','」。$ _POST ['street ']。「','」。$ _POST ['city']。「',」。$ _POST ['mikud']。「,」。$ _POST ['oolam']。「)」;

使用本

$nickname=mysql_real_escape_string($_POST['nname']); 
    $username=mysql_real_escape_string($_POST['username']); 
    $userpass=md5(mysql_real_escape_string($_POST['userpass'])); 
    $useremail=mysql_real_escape_string($_POST['email']); 
    $userrank=2; 
    $useroolamR=1; 
    $userphone=mysql_real_escape_string($_POST['cellphone1']); 
    $userphone2=mysql_real_escape_string($_POST['cellphone2']); 
    $userstr=mysql_real_escape_string($_POST['street']); 
    $usercity=mysql_real_escape_string($_POST['city']); 
    $usermikud=$_POST['mikud']; 
    $useroolamid=$_POST['oolam']; 

    $qry="INSERT INTO users (NickName, username, userpass, userEmail, userRank, userOOlamR, userPhone, userPhone2, userStr, userCity, userMikud, userOOlamID) VALUES ('$nickname','$username','$userpass','$useremail', $userrank, $useroolamR,'$userphone','$userphone2','$userstr','$usercity',$usermikud,$useroolamid)"; 
+0

嗯,謝謝你的回答,它更多的是這樣安排的,但它仍然不起作用,並且迴應它,就像以前一樣...... – 2012-01-05 01:44:47

+0

這不是一個錯誤,因爲「userMikud」和「 userOOlamID「被設置爲MySQL DB中的一個int。 – 2012-01-05 01:50:27

+0

查詢更新可以嘗試使用它現在 – 2012-01-05 02:02:57