2013-05-31 130 views
0

PHP版本:5.4.3 MySQLi的版本:5.5.24爲什麼我的PHP MySQLi查詢不能插入數據庫?

我已經在這個代碼幾天盯着現在,固定了大量的小錯誤,但還是無法弄清楚,爲什麼它贏得」 t成功添加到我的數據庫。

斷碼:

// All of my posts have been excluded 
// Post Example: 
// $server = $_POST['server']; 

mysqli_query($link, sprintf(
    'INSERT INTO `tribe-server-inv`.`serverdb` (' . 

    //Server Name 
    '`Record`, `Server`, `Active Server`, `Server Location`, `Deactivated Server`, ' . 

    //System Overview 
    '`Operating System`, `Serial Number`, `Model`, `CPU`, `Power Requirements`, `Location`, `Memory`, ' . 
    '`Total Physical Disk`, ' . 

    //System Information 
    '`Antivirus Installed`, `Warrenty Start Date`, `Physical Server`, `Install Date`, `Antivirus Version`, ' . 
    '`Warrenty End Date`, `Virtual Server`, `Deactivated Date`, ' . 

    //Availability 
    '`Operation Availability Days`, `Availability Downtime Days`, `Operation Availability Hours`, ' . 
    '`Availability Downtime Hours`, ' . 

    //Support Information 
    '`Hardware Vender`, `Associated Servers 1`, `System Owner`, `Associated Servers 2`, ' . 
    '`Database Owner`, `Associated Servers 3`, `Application Owner`, `Associated Servers 4`, ' . 
    '`Software Owner`, `Associated Servers 5`, ' . 

    //Network Info 
    '`IP Address 1`, `MAC Address 1`, `Trunked IP Address 1`, `IP Address 2`, `MAC Address 2`, ' . 
    '`Trunked IP Address 2`, `IP Address 3`, `MAC Address 3`, `Management Port IP Address`, ' . 
    '`IP Address 4`, `MAC Address 4`, ' . 

    //Storage Info 
    '`Sans Storage 1`, `Sans Storage 1 Drive Space 1`, `Sans 1 Initiator Address`, `Sans Storage 2`, ' . 
    '`Sans Storage 2 Drive Space 2`, `Sans 2 Initiator Address`, ' . 
    '`Promise Storage 1`, `Promise Storage 1 Drive Space 1`, `Promise 1 Initiator Address`, ' . 
    '`Promise Storage 2`, `Promise Storage 2 Drive Space 2`, `Promise 2 Initiator Address`, ' . 

    //System Backup 
    '`Appassure`, `Backupexec`, `Other Backup`, `Backup Server`, `Replication Backup Server`, ' . 
    '`Backup Server Location`, `Replication Backup Location`, `Backup Server Size`, ' . 
    '`Replication Backup Size`, `Offsite/Archive Backups`, `Backup Image`, `Archive Offsite Location`, ' . 
    '`Backup Image Location`, `Archive Size`, `Backup Misc Info`, `Backup Daily`, ' . 
    '`Daily Backup Space Used`, `Backup Weekly`, `Weekly Backup Space Used`, `Backup Quarterly`, ' . 
    '`Quarterly Backup Space Used`, `Backup Yearly`, `Yearly Backup Space Used`, ' . 

    //Disaster Recovery 
    '`Number of Users`, `Daily Bandwidth Consumption`, `Equipment Replacement Time`, ' . 
    '`Total Local Data Storage`, `Vender Disaster Turn Around`, `Vender Disaster Cost`, ' . 
    '`Total Network Storage`, `Approximate Tech Hours`, `Est Replacement Cost`, ' . 
    '`Approximate Total Replacement Time`, `Disaster Recovery Scenario 1 Loss of Software`, ' . 
    '`Disaster Recovery Scenario 2 Loss of Hardware`, `Application`)' . 

    //Values 
    'VALUES ' . 

    //Server Name 
    '(NULL, \'%s\', \'%s\', \'%s\', \'%s\', ' . 

    //System Overview 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 

    //System Information 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', ' . 

    //Availability 
    '\'%s\', \'%s\', \'%s\', \'%s\', ' . 

    //Support Information 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', \'%s\', ' . 

    //Network Info 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 

    //Storage Info 
    '\'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', ' . 

    //System Backup 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', ' . 

    //Disaster Recovery 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' . 
    '\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', 

    //Names 
    mysqli_real_escape_string($link, $server), 
    mysqli_real_escape_string($link, $activeServer), 
    mysqli_real_escape_string($link, $serverLocation), 
    mysqli_real_escape_string($link, $deactiveServer), 

    //Overview 
    mysqli_real_escape_string($link, $operating), 
    mysqli_real_escape_string($link, $serial), 
    mysqli_real_escape_string($link, $model), 
    mysqli_real_escape_string($link, $cpu), 
    mysqli_real_escape_string($link, $powerReq), 
    mysqli_real_escape_string($link, $location), 
    mysqli_real_escape_string($link, $memory), 
    mysqli_real_escape_string($link, $totPhyDisk), 

    //System Info 
    mysqli_real_escape_string($link, $antiVirusInstall), 
    mysqli_real_escape_string($link, $warrentyStart), 
    mysqli_real_escape_string($link, $phyServer), 
    mysqli_real_escape_string($link, $installDate), 
    mysqli_real_escape_string($link, $antiVirusVersion), 
    mysqli_real_escape_string($link, $warrentyExpire), 
    mysqli_real_escape_string($link, $virtualServer), 
    mysqli_real_escape_string($link, $deactivatedDate), 

    //Availability 
    mysqli_real_escape_string($link, $availableDays), 
    mysqli_real_escape_string($link, $downtimeDays), 
    mysqli_real_escape_string($link, $availableHours), 
    mysqli_real_escape_string($link, $downtimeHours), 

    //Support Info 
    mysqli_real_escape_string($link, $hardwareVendor), 
    mysqli_real_escape_string($link, $assoServ1), 
    mysqli_real_escape_string($link, $systemOwner), 
    mysqli_real_escape_string($link, $assoServ2), 
    mysqli_real_escape_string($link, $databaseOwn), 
    mysqli_real_escape_string($link, $assoServ3), 
    mysqli_real_escape_string($link, $appOwner), 
    mysqli_real_escape_string($link, $assoServ4), 
    mysqli_real_escape_string($link, $softwareOwn), 
    mysqli_real_escape_string($link, $assoServ5), 

    //Network Info 
    mysqli_real_escape_string($link, $IP1), 
    mysqli_real_escape_string($link, $MAC1), 
    mysqli_real_escape_string($link, $trunk1), 
    mysqli_real_escape_string($link, $IP2), 
    mysqli_real_escape_string($link, $MAC2), 
    mysqli_real_escape_string($link, $trunk2), 
    mysqli_real_escape_string($link, $IP3), 
    mysqli_real_escape_string($link, $MAC3), 
    mysqli_real_escape_string($link, $manPortIP), 
    mysqli_real_escape_string($link, $IP4), 
    mysqli_real_escape_string($link, $MAC4), 

    //Storage 
    mysqli_real_escape_string($link, $sanStor1), 
    mysqli_real_escape_string($link, $driveSpace1), 
    mysqli_real_escape_string($link, $initiatorAddress1), 
    mysqli_real_escape_string($link, $sanStor2), 
    mysqli_real_escape_string($link, $driveSpace2), 
    mysqli_real_escape_string($link, $initiatorAddress2), 
    mysqli_real_escape_string($link, $promStor1), 
    mysqli_real_escape_string($link, $promStorSpace1), 
    mysqli_real_escape_string($link, $prom1InitAddress), 
    mysqli_real_escape_string($link, $promStor2), 
    mysqli_real_escape_string($link, $promStorSpace2), 
    mysqli_real_escape_string($link, $prom2InitAddress), 

    //System Backup 
    mysqli_real_escape_string($link, $appAssure), 
    mysqli_real_escape_string($link, $backupExec), 
    mysqli_real_escape_string($link, $otherBackup), 
    mysqli_real_escape_string($link, $backupServ), 
    mysqli_real_escape_string($link, $repBackupServ), 
    mysqli_real_escape_string($link, $backupServLoc), 
    mysqli_real_escape_string($link, $repBackupLoc), 
    mysqli_real_escape_string($link, $backupSize), 
    mysqli_real_escape_string($link, $repBackupSize), 
    mysqli_real_escape_string($link, $archiveBackup), 
    mysqli_real_escape_string($link, $backupImage), 
    mysqli_real_escape_string($link, $arcOffsiteLoc), 
    mysqli_real_escape_string($link, $backupImageLoc), 
    mysqli_real_escape_string($link, $arcBackSize), 
    mysqli_real_escape_string($link, $backupMiscInfo), 
    mysqli_real_escape_string($link, $backupDaily), 
    mysqli_real_escape_string($link, $dailySpaceUsed), 
    mysqli_real_escape_string($link, $backupWeekly), 
    mysqli_real_escape_string($link, $weeklySpaceUsed), 
    mysqli_real_escape_string($link, $backupQuarter), 
    mysqli_real_escape_string($link, $quarterlySpaceUsed), 
    mysqli_real_escape_string($link, $backupYear), 
    mysqli_real_escape_string($link, $yearlySpaceUsed), 

    //Disaster Recovery 
    mysqli_real_escape_string($link, $numUsers), 
    mysqli_real_escape_string($link, $bandwidth), 
    mysqli_real_escape_string($link, $equipReplaceTime), 
    mysqli_real_escape_string($link, $totalLocStor), 
    mysqli_real_escape_string($link, $vendorTurn), 
    mysqli_real_escape_string($link, $venDisCost), 
    mysqli_real_escape_string($link, $totNetStor), 
    mysqli_real_escape_string($link, $approxTechTime), 
    mysqli_real_escape_string($link, $estRepCost), 
    mysqli_real_escape_string($link, $totReplaceTime), 
    mysqli_real_escape_string($link, $disasterRecover1), 
    mysqli_real_escape_string($link, $disasterRecover2), 
    mysqli_real_escape_string($link, $Applications))); 

工作代碼:

 mysqli_query($link, sprintf(
    'INSERT INTO serverdb (' . 

    //Server Name 
    'Server,' . 
    '`Server Location`)' . 

    //Values 
    'VALUES ' . 

    //Server Name 
    '(\'%s\', \'%s\')', 

    //Names 
    mysqli_real_escape_string($link, $server), 
    mysqli_real_escape_string($link, $serverLocation))); 

這兩套代碼結構完全一樣,我無法弄清楚什麼是錯的。

+5

是否'mysqli_error($鏈接)'打印出什麼? – andrewsi

+7

至少使用準備好的語句來代替這個sprintf怪物... – bwoebi

+14

無論誰設計這張表,呃......真的不應該設計表格。 – Kermit

回答

0

由於時間限制,表格重建目前不在選項中。解決方案不是修復上面的代碼,而是在沒有mysqli_real_escape_strings的情況下重寫整個查詢。

我開始工作的查詢發佈在下面。爲了您的一些解脫,我從零開始建立了另一張表格來跟蹤客戶端計算機,並且該代碼將在下面發佈。該代碼將是我將重做服務器的方式,除非我在此之前找到/做出改進。

$q = 'INSERT INTO `tribe-server-inv`.`serverdb` (`Server`,'. 
     '`Server Location`, `Operating System`, `CPU`, `Memory`, `Total Physical Disk`, 

`Serial Number`, `Model`, `Location`, `IP Address 1`, `IP Address 2`,'. 
    '`IP Address 3`, `IP Address 4`, `Trunked IP Address 1`, `Trunked IP Address 2`, `Management Port IP Address`, `Physical Server`, `Virtual Server`, `Warrenty Start Date`, `Warrenty End Date`, `Active Server`, `Install Date`, `Deactivated Server`, `Deactivated Date`,'. 
      '`Power Requirements`, `Sans Storage 1`, `Sans Storage 2`, `Sans Storage 1 Drive Space 1`, `Sans Storage 2 Drive Space 2`, `Sans 1 Initiator Address`, `Sans 2 Initiator Address`, `Promise Storage 1`,'. 
      '`Promise Storage 2`, `Promise Storage 1 Drive Space 1`, `Promise Storage 2 Drive Space 2`, `Promise 1 Initiator Address`, `Promise 2 Initiator Address`, `Operation Availability Hours`, `Operation Availability Days`,'. 
     '`Availability Downtime Days`, `Availability Downtime Hours`, `Application`, `Associated Servers 1`, `Associated Servers 2`, `Associated Servers 3`, `Associated Servers 4`, `Associated Servers 5`, `Hardware Vender`, `System Owner`, `Database Owner`, `Application Owner`, `Software Owner`, `MAC Address 1`, `MAC Address 2`, `MAC Address 3`,'. 
     '`MAC Address 4`, `Backup Server`, `Backup Server Location`, `Backup Server Size`, `Replication Backup Server`, `Replication Backup Location`, `Replication Backup Size`, `Offsite/Archive Backups`, `Archive Offsite Location`, `Archive Size`, `Backup Daily`, `Backup Weekly`, `Backup Quarterly`, `Backup Yearly`, `Backup Misc Info`, `Backup Image`, `Backup Image Location`, `Disaster Recovery Scenario 1 Loss of Software`, `Disaster Recovery Scenario 2 Loss of Hardware`, `Daily Backup Space Used`, `Weekly Backup Space Used`, `Quarterly Backup Space Used`, `Yearly Backup Space Used`, `Antivirus Installed`, `Antivirus Version`, `Est Replacement Cost`, `Number of Users`,'. 
     '`Daily Bandwidth Consumption`, `Total Local Data Storage`, `Total Network Storage`, `Equipment Replacement Time`, `Vender Disaster Turn Around`, `Vender Disaster Cost`, `Approximate Tech Hours`, `Approximate Total Replacement Time`, `Appassure`, `Backupexec`, `Other Backup`)'. 
     'VALUES (\''.$server.'\', \''.$serverLocation.'\', \''.$operating.'\', \''.$cpu.'\', \''.$memory.'\', \''.$totPhyDisk.'\', \''.$serial.'\', \''.$model.'\', \''.$location.'\', \''.$IP1.'\', \''.$IP2.'\', \''.$IP3.'\', \''.$IP4.'\', \''.$trunk1.'\', \''.$trunk2.'\', \''.$manPortIP.'\', \''.$phyServer.'\', \''.$virtualServer.'\', \''.$warrentyStart.'\', \''.$warrentyExpire.'\', \''. $activeServer.'\', \''.$installDate.'\', \''.$deactiveServer.'\', \''.$deactivatedDate.'\', \''.$powerReq.'\', \''.$sanStor1.'\', \''.$sanStor2.'\', \''.$driveSpace1.'\', \''.$driveSpace2.'\', \''.$initiatorAddress1.'\', \''.$initiatorAddress2.'\', \''.$promStor1.'\', \''.$promStor2.'\', \''.$promStorSpace1.'\', \''.$promStorSpace2.'\', \''.$prom1InitAddress.'\', \''.$prom2InitAddress.'\', \''.$availableHours.'\', \''.$availableDays.'\', \''.$downtimeDays.'\', \''.$downtimeHours.'\', \''.$Applications.'\', \''.$assoServ1.'\', \''.$assoServ2.'\', \''.$assoServ3.'\', \''.$assoServ4.'\', \''.$assoServ5.'\', \''.$hardwareVendor.'\', \''.$systemOwner.'\', \''.$databaseOwn.'\', \''.$appOwner.'\', \''.$softwareOwn.'\', \''.$MAC1.'\', \''.$MAC2.'\', \''.$MAC3.'\', \''.$MAC4.'\', \''.$backupServ.'\', \''.$backupServLoc.'\', \''.$backupSize.'\', \''.$repBackupServ.'\', \''.$repBackupLoc.'\', \''.$repBackupSize.'\', \''.$archiveBackup.'\', \''.$arcOffsiteLoc.'\', \''.$arcBackSize.'\', \''.$backupDaily.'\', \''.$backupWeekly.'\', \''.$backupQuarter.'\', \''.$backupYear.'\', \''.$backupMiscInfo.'\', \''.$backupImage.'\', \''.$backupImageLoc.'\', \''.$disasterRecover1.'\', \''.$disasterRecover2.'\', \''.$dailySpaceUsed.'\', \''.$weeklySpaceUsed.'\', \''.$quarterlySpaceUsed.'\', \''.$yearlySpaceUsed.'\', \''.$antiVirusInstall.'\', \''.$antiVirusVersion.'\', \''.$estRepCost.'\', \''.$numUsers.'\', \''.$bandwidth.'\', \''.$totalLocStor.'\', \''.$totNetStor.'\', \''.$equipReplaceTime.'\', \''.$vendorTurn.'\', \''.$venDisCost.'\', \''.$approxTechTime.'\', \''.$totReplaceTime.'\', \''.$appAssure.'\', \''.$backupExec.'\', \''.$otherBackup.'\')'; 

新的客戶端代碼:

$sql = "SELECT id FROM `tribe-server-inv`.`client_main` ORDER BY id DESC LIMIT 1"; 
         $result = mysqli_query($link, $sql); 

         while($row = mysqli_fetch_assoc($result)) 
         { 
          $id = $row['id']+1; 
         } 


         //Client Main 
         $q1 = "INSERT INTO `tribe-server-inv`.`client_main` (`id` ,`serial` ,`make` ,`model` ," . 
           "`warrentyStart` ,`warrentyEnd` ,`status` ,`type`)VALUES (".$id." , '" . 
           $serial."', '".$make."', '".$model."','".$warrentyStart."', '".$warrentyExpire."', '".$status."', '".$type."');"; 

         //Client Deploy 
         $q2 = "INSERT INTO `tribe-server-inv`.`client_deploy` (`id` , `ticket` ,`techID` ,`installDate` ,`updateDate`)". 
           "VALUES (". 
           "'".$id."', '".$ticket."', '".$tech."', '".$installDate."', '".$updateDate."');"; 

         //Client Profile 
         $q3 = "INSERT INTO `tribe-server-inv`.`client_profile` (`id` ,`username` ,`department` ,`buildID` ,`notes`)" . 
           "VALUES (" . 
           "'".$id."' , '".$user."', '".$department."', '".$building."', '".$notes."');"; 


         //Client Hardware 
         $q4 = "INSERT INTO `tribe-server-inv`.`client_hardware` (" . 
           "`id` ,`cpu` ,`memory` ,`diskSpace1` ,`diskSpace2` ,`diskSpace3`)". 
           "VALUES (". 
           "'".$id."' , '".$cpu."', '".$memory."', '".$diskSpace1."', '".$diskSpace2."', '".$diskSpace3."');"; 

         //Client Software 
         $q5 = "INSERT INTO `tribe-server-inv`.`client_software` (`id` ,`operating` ,`operating_license` ,`antivirus` ,". 
           "`antivirus_license` ,`office` ,`office_license`)". 
           "VALUES (". 
           "'".$id."', '".$operating."', '".$osLicense."', '".$antivirusInstalled."', '".$antivirusVersion."',". 
           "'".$officeVersion."', '".$officeLicense."');"; 

         //Client Network 
         $q6 = "INSERT INTO `tribe-server-inv`.`client_network` (`id` ,`ip` ,`physicalMAC` ,`wirelessMAC` ,`port` ,`dns1` ,". 
           "`dns2` ,`dns3` ,`dns4`)". 
           "VALUES (". 
           "'".$id."', '".$ip."', '".$phyMac."', '".$wireMac."', '".$port."', '".$dns1."', '".$dns2."', '".$dns3."', '".$dns4."');"; 
1
  1. 確保您可以看到PHP錯誤。
    創建一個故意的語法錯誤,並查看您是否可以在屏幕上的日誌中找到它。如果不能 - 配置PHP要麼記錄錯誤或顯示他們在屏幕上:

    error_reporting = E_ALL 
    display_errors = On 
    log_errors = On 
    
    在php.ini

    other places

  2. 然後確保你可以再次看到PHP錯誤。
  3. 確保你能看到mysqli錯誤。以這種方式運行所有查詢:

    mysqli_query($link, $query) or trigger_error(mysqli_error($link)); 
    
  4. 觀察錯誤並採取相應措施。
+0

你可以試着追查錯誤嗎?我真的很想看看這是否可能。 – bwoebi

+0

錯誤是報告和日誌記錄,在最後一個MySQLi_Real_Escape_String中創建錯誤,並顯示錯誤。沒有故意的錯誤,不會顯示問題。 當嘗試trigger_error(mysqli_error($ link))時,出現錯誤: 解析錯誤:語法錯誤,意外的'$ link'(T_VARIABLE)在... \ saveFunction.php行311 – Drifterhawk

+0

結束重寫整個查詢,直到有人得到時間來重建數據庫。現在工作正常。感謝那些試圖幫助的人。 – Drifterhawk

相關問題