首页 > 解决方案 > 为什么我的阵列不能插入到我的数据库中?

问题描述

我有这段代码,由于某种原因它不会被插入到我的数据库中。它基本上采用一个数组,将其转换为字符串,然后提交值。(如果您需要我编辑以显示我的整个代码,我会这样做)

我在下面遇到问题的代码

$array = array($RaceNumber,$Track,$Num,$HorseName,$Odds,$Color,$Jockey,$Trainer,$PostTime,$Course,$RaceDistance,$Win,$Place,$Show);

for ($a=0; $a<$Num; $a++) {
$dataArray=array($RaceNumber[$a],$Track[$a],$Num[$a],$HorseName[$a],$Odds[$a],$Color[$a],$Jockey[$a],$Trainer[$a],$PostTime[$a],$Course[$a],$RaceDistance[$a],$Win[$a],$Place[$a],$Show[$a]);

$dataArray--;
for ($j=0; $j<$Num; $j++) {

    $RaceNumber=$dataArray[0];
    $Track=$dataArray[1];
    $Num=$dataArray[2];
    $HorseName=$dataArray[3];
    $Odds=$dataArray[4];
    $Color=$dataArray[5];
    $Jockey=$dataArray[6];
    $Trainer=$dataArray[7];
    $PostTime=$dataArray[8];
    $Course=$dataArray[9];
    $RaceDistance=$dataArray[10];
    $Win=$dataArray[11];
    $Place=$dataArray[12];
    $Show=$dataArray[13];
    $sql="INSERT INTO `$Date` (RaceNumber,Track,HorseNum,HorseName,Odds,Color,JockeyName,TrainerName,PostTime,Course,RaceDistance,Win,Place,Show) VALUES ('$RaceNumber','$Track','$Num','$HorseName','$Odds','$Color','$Jockey','$Trainer','$PostTime','$Course','$RaceDistance','$Win','$Place','$Show')";
    echo $sql;
    mysqli_query($query2,$sql);
    }
  }

当我回应我的时候$sql我得到

INSERT INTO 2018-09-20 (RaceNumber,Track,HorseNum,HorseName,Odds,Color,JockeyName,TrainerName,PostTime,Course,RaceDistance,Win,Place,Show) VALUES ('1','FingerLakes','1','','','Red','','','','Dirt','','none','none','none')

但是当我进行查询时,它并没有插入数据库。

我创建数据表的部分代码

<?php 
if(isset($_POST['submit'])) {

    $Date = $_POST['date'];

    $sql = "CREATE TABLE IF NOT EXISTS `$Date` (
    `Id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `RaceNumber` varchar(255) NOT NULL,
    `Track` varchar(255) NOT NULL,
    `HorseNum` varchar(255) NOT NULL,
    `HorseName` varchar(255) NOT NULL,
    `Odds` varchar(255) NOT NULL,
    `Color` varchar(255) NOT NULL,
    `JockeyName` varchar(255) NOT NULL,
    `TrainerName` varchar(255) NOT NULL,
    `PostTime` varchar(255) NOT NULL,
    `Course` varchar(255) NOT NULL,
    `RaceDistance` varchar(255) NOT NULL,
    `Win` varchar(255) NOT NULL,
    `Place` varchar(255) NOT NULL,
    `Show` varchar(255) NOT NULL
) ENGINE=MyISAM  DEFAULT CHARSET=utf8"
;
$query2 = mysqli_connect('localhost','root','','Races');   

$z= mysqli_query($query2, $sql) or die("Table already exist.. please try again");
echo "Your Table ".$Date." is successfully created <br/>";
$RaceNum = $_POST['RaceNum'];
$i=1;

我在我的错误日志中收到

2018-09-20 16:00:59 9444 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'max_value' at position 4 to have type varbinary(255), found type varchar(255).

标签: phpdatabase

解决方案


您正在使用一个名为的列,该列Show是 mysql 中的保留关键字,向其添加反引号,插入查询应该可以工作。

值得注意的是,您不应该只使用数字和连字符来命名您的表格。

此处参考保留关键字的完整列表: https ://dev.mysql.com/doc/refman/8.0/en/keywords.html


推荐阅读