PHP INSERT INTO无法正常工作,没有错误

时间:2017-12-02 15:58:54

标签: php mysql

我试图通过PHP在表中插入一行。我已经阅读了多个线程,其他人有类似的问题,但我似乎无法找到我的解决方案。希望焕然一新会有所帮助。

有几点需要注意:

  • 在同一个表中使用INSERT INTO的多重查询可以正常工作。
  • 此查询存在于代码中间(不像聚合查询那样在开头)。当我将查询移到开头时,仍然无效。
  • 我尝试过日期格式,数字格式,有无单引号。
  • 在不同的表中插入一些作品(行插入,类别但日期和金额不是。
  • 我在Mac上使用MAMP。
  • 没有PHP错误或Apache错误。
  • MySQL错误如下:
  
      
  • 2017-12-02 10:57:50 700000b4f000 InnoDB:错误:表" mysql"。" innodb_table_stats"未找到。      
        
    • 2017-12-02 10:57:50 700000b4f000 InnoDB:错误:获取表格所需的持久性统计信息" ginkgo"。" exptrans"但是所需的系统表mysql.innodb_table_stats和mysql.innodb_index_stats不存在或具有意外的结构。而是使用瞬态统计数据。
    •   
    • 2017-12-02 10:57:50 700000b4f000 InnoDB:错误:表" mysql"。" innodb_table_stats"没找到。
    •   
    • 2017-12-02 10:57:51 700000b4f000 InnoDB:错误:表" mysql"。" innodb_table_stats"没找到。
    •   
    • 2017-12-02 10:57:51 700000b4f000 InnoDB:错误:获取表格所需的持久性统计信息" ginkgo"。" fintrans"但是所需的系统表mysql.innodb_table_stats和mysql.innodb_index_stats不存在或具有意外的结构。而是使用瞬态统计数据。
    •   
    • 2017-12-02 10:57:51 700000b4f000 InnoDB:错误:表" mysql"。" innodb_table_stats"没找到。
    •   
    • 2017-12-02 10:58:01 700000934000 InnoDB:错误:表" mysql"。" innodb_table_stats"没找到。
    •   
    • 2017-12-02 10:58:01 700000934000 InnoDB:重新计算表格所需的持久统计数据" ginkgo"。" fintrans"但是所需的持久统计信息存储不存在或已损坏。而是使用瞬态统计数据。
    •   
    • 2017-12-02 10:58:11 700000934000 InnoDB:错误:表" mysql"。" innodb_table_stats"没找到。
    •   
    • 2017-12-02 10:58:11 700000934000 InnoDB:重新计算表格所需的持久统计数据" ginkgo"。" exptrans"但是所需的持久统计信息存储不存在或已损坏。而是使用瞬态统计数据。
    •   
  •   

这是我的代码:

$mysqli = new mysqli('localhost:8889','root','root','Ginkgo');
if($mysqli->connect_errno){
    echo ('Error connecting to MySQL server. '.$mysqli->connect_errno .' '.$mysqli->connect_error);
}

$sql = "INSERT INTO `FinTrans` (`Category`,`Location`,`FAmt`,`FDT`) values ('Tenant','514 Creekview',".$gross_rent[0].",'2000-01-01');";
echo $sql;

if( mysqli_query($mysqli,$sql))
{
    echo 'success';
}else{
    echo 'failed';
}

这就是印刷品:

INSERT INTO`FinTrans`(`Category`,`Location`,`FAmt`,`FDT`)值 (' Tenant'' 514 Creekview',3200,' 2000-01-01');成功

这是表格的结构:

CREATE TABLE `FinTrans` (
    `Acct` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `Clients` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `Category` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `Counterparty` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `RentDate` date DEFAULT NULL,
    `Description` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `Location` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `Date Spent by Employee` date DEFAULT NULL,
    `Date Reimbursed by Client` date DEFAULT NULL,
    `ID` int(10) unsigned DEFAULT NULL,
    `FDT` date DEFAULT NULL,
    `FAmt` decimal(18,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

非常感谢你的帮助。

Sharlene

1 个答案:

答案 0 :(得分:0)

代码似乎有效,查看其中一些错误可能是连接问题或身份验证问题