2011-08-08 37 views
1

我遇到了這個長的SQL查詢的問題。如果我將$result= mysql_query(更改爲echo語句並將生成的字符串複製到MySQL中,它會將數據添加到數據庫中。只有當我使用PHP來做它失敗。PHP的MySQL查詢不起作用

代碼:

$con = mysql_connect("-","-","-"); 
     if (!$con) 
      { 
      die('Could not connect: ' . mysql_error()); 
      } 
     else { 
      // connected to database successfully 
     } 
     mysql_select_db("casemanagers", $con); 

     $result= mysql_query("INSERT INTO `criminal` (`JudgeID`, `Month`, `Year`, `PendingCapDefs`, `PendingCapCases`, `PendingNonCapDefs`, `PendingNonCapCases`, `AsgNewCapDefs`, `AsgNewCapCases`, `AsgNewNonCapDefs`, `AsgNewNonCapCases`, `AsgTRCapDefs`, `AsgTRCapCases`, `AsgTRNonCapDefs`, `AsgTRNonCapCases`, `AsgRCCapDefs`, `AsgRCCapCases`, `AsgRCNonCapDefs`, `AsgRCNonCapCases`, 
     `DispGPCapDefs`, `DispGPCapCases`, `DispGPNonCapDefs`, `DispGPNonCapCases`, `DispDDCapDefs`, `DispDDCapCases`, `DispDDNonCapDefs`, `DispDDNonCapCases`, `DispNPCapDefs`, `DispNPCapCases`, `DispNPNonCapDefs`, `DispNPNonCapCases`, `DispODCapDefs`, `DispODCapCases`, `DispODNonCapDefs`, `DispODNonCapCases`, `DispBTACapDefs`, `DispBTACapCases`, `DispBTANonCapDefs`, `DispBTANonCapCases`, `DispBTCCapDefs`, `DispBTCCapCases`, `DispBTCNonCapDefs`, `DispBTCNonCapCases`, `DispJTACapDefs`, `DispJTACapCases`, `DispJTANonCapDefs`, `DispJTANonCapCases`, `DispJTCCapDefs`, `DispJTCCapCases`, `DispJTCNonCapDefs`, `DispJTCNonCapCases`, `DispADDCapDefs`, `DispADDCapCases`, `DispADDNonCapDefs`, `DispADDNonCapCases`, `DispSCDCapDefs`, `DispSCDCapCases`, `DispSCDNonCapDefs`, `DispSCDNonCapCases`, `DispCTOCapDefs`, `DispCTOCapCases`, `DispCTONonCapDefs`, `DispCTONonCapCases`, `OldCapDefs`, `OldCapCases`, `OldNonCapDefs`, `OldNonCapCases`) VALUES ('$judgeID',' $month',' $year',' $PendingCapDefs','$PendingCapCases','$PendingNonCapDefs','$PendingNonCapCases','$AsgNewCapDefs','$AsgNewCapCases','$AsgNewNonCapDefs','$AsgNewNonCapCases','$AsgTRCapDefs','$AsgTRCapCases','$AsgTRNonCapDefs','$AsgTRNonCapCases',' $AsgRCCapDefs','$AsgRCCapCases','$AsgRCNonCapDefs',' $AsgRCNonCapCases','$DispGPCapDefs','$DispGPCapCases','$DispGPNonCapDefs','$DispGPNonCapCases','$DispDDCapDefs','$DispDDCapCases','$DispDDNonCapDefs','$DispDDNonCapCases',' $DispNPCapDefs',' $DispNPCapCases',' $DispNPNonCapDefs','$DispNPNonCapCases','$DispODCapDefs',' $DispODCapCases','$DispODNonCapDefs','$DispODNonCapCases','$DispBTACapDefs','$DispBTACapCases','$DispBTANonCapDefs','$DispBTANonCapCases','$DispBTCCapDefs','$DispBTCCapCases','$DispBTCNonCapDefs','$DispBTCNonCapCases','$DispJTACapDefs','$DispJTACapCases','$DispJTANonCapDefs','$DispJTANonCapCases','$DispJTCCapDefs','$DispJTCCapCases','$DispJTCNonCapDefs','$DispJTCNonCapCases','$DispADDCapDefs','$DispADDCapCases','$DispADDNonCapDefs','$DispADDNonCapCases','$DispSCDCapDefs','$DispSCDCapCases','$DispSCDNonCapDefs','$DispSCDNonCapCases','$DispCTOCapDefs','$DispCTOCapCases','$DispCTONonCapDefs','$DispCTONonCapCases','$OldCapDefs','$OldCapCases','$OldNonCapDefs','$OldNonCapCases');"); 


     if ($result==1){ 
      $statusCaption = 'New Civil Report'; 
      echo 'Report Successfully Saved!<br/><br/><a href="login.php"><-- Back to User Menu</a>'; 
     } 
     else { 
      $statusCaption = 'Error'; 
      echo 'There was a problem with one or more of your entries. Please try again.<br/><br/><a href="newcivilreport.php"><--Back to Civil Report</a>'; 

     } 
+0

你是基於'$ results'值檢查「成功」還是通過檢查數據庫結果? –

+0

嗯,難道不是更容易使用mysql宏,並使其更像CMS?另外,你有沒有嘗試過讓長查詢更小? 'mysql_query(「INSERT INTO'criminal'('JudgeID')VALUES('$ judgeID');」);'測試是否有任何東西被添加?另外,你的mysql連接不會在最後關閉.. –

回答

5

mysql_query()成功返回語句句柄,或者在失敗/錯誤布爾值false。它永遠不會返回一個整數'1'。

if ($result !== false) { 
    ... success ... 
} else { 
    ... failure ... 
} 

需要注意的是「失敗」僅僅是由於在查詢語法錯誤或違反一個數據庫中的約束或在客戶端 - 服務器通信鏈路故障。不返回行的select查詢不是失敗。這只是一個恰好不包含行的結果集。

1
$result= mysql_query("INSERT INTO `criminal` VALUES ('$judgeID',' $month',' $year',' $PendingCapDefs','$PendingCapCases','$PendingNonCapDefs','$PendingNonCapCases','$AsgNewCapDefs','$AsgNewCapCases','$AsgNewNonCapDefs','$AsgNewNonCapCases','$AsgTRCapDefs','$AsgTRCapCases','$AsgTRNonCapDefs','$AsgTRNonCapCases',' $AsgRCCapDefs','$AsgRCCapCases','$AsgRCNonCapDefs',' $AsgRCNonCapCases','$DispGPCapDefs','$DispGPCapCases','$DispGPNonCapDefs','$DispGPNonCapCases','$DispDDCapDefs','$DispDDCapCases','$DispDDNonCapDefs','$DispDDNonCapCases',' $DispNPCapDefs',' $DispNPCapCases',' $DispNPNonCapDefs','$DispNPNonCapCases','$DispODCapDefs',' $DispODCapCases','$DispODNonCapDefs','$DispODNonCapCases','$DispBTACapDefs','$DispBTACapCases','$DispBTANonCapDefs','$DispBTANonCapCases','$DispBTCCapDefs','$DispBTCCapCases','$DispBTCNonCapDefs','$DispBTCNonCapCases','$DispJTACapDefs','$DispJTACapCases','$DispJTANonCapDefs','$DispJTANonCapCases','$DispJTCCapDefs','$DispJTCCapCases','$DispJTCNonCapDefs','$DispJTCNonCapCases','$DispADDCapDefs','$DispADDCapCases','$DispADDNonCapDefs','$DispADDNonCapCases','$DispSCDCapDefs','$DispSCDCapCases','$DispSCDNonCapDefs','$DispSCDNonCapCases','$DispCTOCapDefs','$DispCTOCapCases','$DispCTONonCapDefs','$DispCTONonCapCases','$OldCapDefs','$OldCapCases','$OldNonCapDefs','$OldNonCapCases');") or die(mysql_error()); 

嘗試

順便說一句,你可能錯過了很多變數

+0

非常感謝!那就是訣竅。那究竟做了什麼? – Jeff

+0

@Jeff:你列出的列表有問題 – genesis

1

嘗試只是查詢後添加

or die(mysql_error()); 

它會給你解答/錯誤/告訴你什麼是錯的。

0

請閱讀the PHP.net page。函數mysql_query()不返回true/false。它只在出現錯誤時才返回false。您的代碼應該是這樣的:當它真的真的返回false

if ($result === false) { 
    //error 
} 
else { 
    //success 
} 

這樣,你只看到了錯誤發生。

編輯:另外,我從來沒有包括在你的PHP代碼中的實際查詢;當你有一個查詢。這是一個查詢分隔符,僅在命令提示符下或在同一個mysql_query()實例中執行兩個查詢時才需要。