为什么我的阵列无法插入数据库?

时间:2018-09-20 19:55:39

标签: php database

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

代码我在下面有问题

$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).

1 个答案:

答案 0 :(得分:0)

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

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

以下是保留关键字的完整列表,以供参考: https://dev.mysql.com/doc/refman/8.0/en/keywords.html