为什么我的PHP MySQLi查询不能插入数据库?


Why won't my PHP MySQLi Query insert to Database?

PHP版本:5.4.3mysql Version: 5.5.24

我已经盯着这段代码好几天了,修正了一些小错误,但仍然不明白为什么它不能成功地添加到我的数据库。

破碎的代码:

// 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)));

这两组代码的结构完全相同,我不知道是哪里出了问题。

  1. 确保你可以看到PHP错误。
    创建一个故意的语法错误,看看是否可以在屏幕上的日志中找到它。如果不能-配置你的PHP要么记录错误,要么在屏幕上显示错误:

    error_reporting = E_ALL
    display_errors = On
    log_errors = On
    
  2. 然后确保你可以再次看到PHP错误。
  3. 确保你可以看到mysqli错误。以这种方式运行所有查询:

    mysqli_query($link, $query) or trigger_error(mysqli_error($link));
    
  4. 观察错误并采取适当的措施。

由于时间限制,目前无法重建表。解决这个问题的方法不是修复上面的代码,而是从头开始重写整个查询,不使用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."');";