2016-12-11 26 views
0

SQL表由Id(AI),PID,AID,WEB,廣告準備好的聲明中有什麼錯誤註冊[無錯誤?]?

我的代碼獲取所有變量,但不會註冊任何東西。但有兩種註冊方法。

A.表單僅包含填充PID和網站,其中隱藏發送。

B.表單包含隱藏發送廣告的PID,AID和網站。

PID不是唯一的,並且可以是多

AID是獨特的或0,如果未註冊選擇其中AID是0或NULL傳遞形式的

網站不是唯一的,並且可以是複製

如果AID爲空或0

IF AID是NULL檢查PID和WEB匹配[只有註冊後,如果AID爲null]
如果AID不是NULL檢查AID,PID和WEB是否已經註冊。 [已存在]

最後如果一切都OKAY在數據庫中註冊產品。

<?php 
    session_start(); 
    $u = $_SESSION['username']; //GETS Session username to register a product 
    require('db.php'); //db connection 
    // ----------------PART A------------ 
    //This gets the ID index Number of user from Member Table 
    $user = "SELECT id from members WHERE username=?"; 
    $stmt = $ref->prepare($user); 
    $stmt->bind_param("s", $u); 
    $rc = $stmt->execute(); 
    if (false===$rc) { 
     die('execute() failed at 1: ' . htmlspecialchars($stmt->error)); 
    } 
    $stmt->bind_result($ux); 
    $stmt->fetch(); 
    $stmt->close(); 
    echo "Pass A <br>"; //Testing purpose 
// ---------------------------------------------------------- 

    $aid = $_POST['proslot']; 
    $web = $_POST['web']; 
    $pid = $_POST['pub']; 
    $advert = $_POST['advert']; 
//-------------INFO DEBUG----------------- 
    //Testing Codes Variables pass 
    echo "<br>uid:<br>".$ux; // User ID 
    echo "<br>advert:<br>".$advert; //Product advertiser 
    echo "<br>pid:<br>".$pid; //Product id 
    echo "<br>aid:<br>".$aid; //audit id 
    echo "<br>web:<br>".$web; //Product website 
//------------------------------------------------------ 
//-------------------PART B-----------------------------  
    if($_POST['adslot'] != NULL){ 

//Cheack if AID and WEBSITE matches any existing record. 
    $valid = "SELECT id from prologger WHERE aid=? AND userweb=?"; 
    $stmt = $ref->prepare($valid); 
    $stmt->bind_param("is", $aid,$web); 
    $rc = $stmt->execute(); 
    if (false===$rc) { 
     die('execute() failed at 2: ' . htmlspecialchars($stmt->error)); 
    } 
    $stmt->store_result(); 
    $val = $stmt->num_rows; 
    if($val > 0){ 
     echo "Product Already exist :"; 
     $stmt->close(); 
     $ref->close(); 
     exit(); 
    } else{ 
     $stmt->close(); 
     $ref->close(); 
    } 
     echo "Pass B[1]"; 
//---------------------PART B[2]------------------------- 
} else {  
     //Cheack if PID,AID and WEBSITE matches any existing record. 
    $valid = "SELECT id from prologger WHERE pid=? AND aid=? AND userweb=?"; 
    $stmt = $ref->prepare($valid); 
    $stmt->bind_param("sis", $pid, $aid,$web); 
    if($_POST['adslot'] == '0' || $_POST['adslot'] == NULL) { 
     $aid = '0' or $aid = NULL; 
    } else { 
     $aid = $_POST['proslot']; 
    } 
    $rc = $stmt->execute(); 
    if (false===$rc) { 
     die('execute() failed at 3: ' . htmlspecialchars($stmt->error)); 
    } 
    $stmt->store_result(); 
    $val2 = $stmt->num_rows; 
    if($val2 > 0){ 
     echo "Unique product per website Required. This product is already registered to this website:" 
     $stmt->close(); 
     $ref->close(); 
     exit(); 
    } 
    $stmt->close(); 
//------------------------------------------------------ 
//------------------------PART C------------------------ 
    echo "Pass C"; 

    echo "<br>ROW 1:<br>".$val; //DEBUG VALUE 

    $sql = "INSERT INTO prologger (uid,advert,pid,aid,userweb) VALUES (?,?,?,?,?)"; 
    $stmt = $ref->prepare($sql) ; 
    $stmt->bind_param("sssis", $ux , $advert, $pid, $aid , $web); //bind variables 
    if($_POST['adslot'] == NULL) { 
     $aid = '0'; 
    } else { 
     $aid = $_POST['adslot']; 
    } 

    $input = $_POST['web']; 

     $input = trim($input, '/'); 

     // If not have http:// or https:// then prepend it 
     if (!preg_match('#^http(s)?://#', $input)) { 
      $input = 'http://' . $input; 
     } 

     $urlParts = parse_url($input); 

     // Remove www. 
     $web = preg_replace('/^www\./', '', $urlParts['host']); 

    $rc = $stmt->execute(); 
    if (false===$rc) { 
     die('execute() failed: at 4 ' . htmlspecialchars($stmt->error)); 
    } 
    $stmt->close(); 
    $ref->close(); 
     echo "Pass Final"; 
    } 
    //------------------------------------------------------ 
    ?> 
+0

你也可以添加db.php文件嗎?這可能是因爲$ stmt-> close();在你的代碼中。 –

+0

'if(isset($ ref)){ \t $ ref-> close();其他{ $ host =「localhost」; $ user =「admin」; $ pass =「12345」; $ dbname =「sysmtest」; $ ref = new mysqli($ host,$ user,$ pass,$ dbname); if(mysqli_connect_error()){echo mysqli_connect_error();退出();} \t }' –

+0

是因爲我關閉'$ ref-> close();'在db.php中?如果多數民衆贊成在這種情況下O_O哦,我的謝謝問。我會盡力消除這種情況。 –

回答

0

我自己修復了。出現了「IF其他」條件,這是在這個上面的代碼B部分

if($_POST['adslot'] != NULL){ //code } else { rest of the code }

其中Else需要被移除

,並在部分在else語句$ref->closeif($val>0)條件需要刪除來解決問題。