2015-04-22 30 views
0

在加載頁面時,else部分中的重定向正在執行。我只想在執行插入時執行它。如果在頁面加載時執行php重定向

$conn = new mysqli($hn, $un, $pw, $db); 
if ($conn->connect_error) die($conn->connect_error); 

    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit,notes) VALUES" . 
     "('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')"; 


    $result = $conn->query($query); 


if (!$result) 
    { 
     echo "INSERT failed: $query<br>" . 
     $conn->error . "<br><br>"; 
     $checksum=1; 
     $conn->close(); 
    } 

    else 
    { 
     $conn->close(); 

     echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">"; 
    } 
+1

然後把它們放在一個塊裏,你只做表單處理 – Ghost

回答

0

你應該使用這個在PHP重定向....

header("Location: http://www.blah.com/blah_blah_blah.php"); 
0

你的變量$結果總是有一個值,讓你的if語句是不正確。 嘗試使用mysqli_affected_rows查看有多少行受到影響。 如果行影響> 0重定向。

0

看來你已經做了一些musqli錯誤。你可以嘗試如下。

<?php 
    $conn = mysqli_connect($hn, $un, $pw, $db); 
    if (mysqli_connect_errno()) { 
     die(mysqli_connect_error()); 
    } 
    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit, notes) VALUES ('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')"; 

    $result = $conn->query($query); 
    if(!mysqli_query($conn,$query)){ 
     echo "INSERT failed: ".$query."<br>"; 
     echo mysqli_error($conn);. "<br><br>"; 
     $checksum = 1; 
    }else{ 
     mysqli_close($conn); 
     echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">"; 
    } 
?> 
0

更改您的條件方法。如果成功,重定向;否則表明它失敗了。

$conn = new mysqli($hn, $un, $pw, $db); 

if ($conn->connect_error) { 
    die('Connect Error: ' . $conn->connect_error); 
} 

    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit,notes) VALUES" . 
     "('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')"; 

    $result = $conn->query($query); 

if ($result) 
    { 
     echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">"; 
     $conn->close(); 
    } 

    else 
    { 
     echo "INSERT failed: $query<br>" . 
     $conn->error . "<br><br>"; 
     $checksum=1; 
     $conn->close(); 
    } 

使用mysqli_affected_rows()是另一種選擇。

$conn = new mysqli($hn, $un, $pw, $db); 

if ($conn->connect_error) { 
    die('Connect Error: ' . $conn->connect_error); 
} 

    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit,notes) VALUES" . 
     "('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')"; 

    $result = $conn->query($query); 

    if (mysqli_affected_rows($conn) > 0){ 
     echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">"; 
     $conn->close(); 
    } 

    else 
    { 
     echo "INSERT failed: $query<br>" . 
     $conn->error . "<br><br>"; 
     $checksum=1; 
     $conn->close(); 
    } 

  • 然而,另一個原因可能是因爲您的查詢可能失敗。

因此,你最好檢查是否所有的變量確實已經填補,從HTML形式最有可能的未來,並使用所有這些條件!empty()

在這一點上,你不清楚你的變量在哪裏以及如何分配。


旁註:您目前的代碼可以使用SQL injection。使用mysqli with prepared statementsPDO with prepared statements,他們更安全