Почему мой массив не будет вставлен в мою базу данных? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть этот код, и по какой-то причине он не будет вставлен в мою базу данных.По сути, он принимает массив, превращает его в строку и затем отправляет значения.(Если вам нужно, чтобы я отредактировал, чтобы показать весь мой код, я сделаю это)

Код У меня возникли проблемы со значением ниже

$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 голосов
/ 20 сентября 2018

Вы используете столбец с именем Show, который является зарезервированным ключевым словом в mysql, добавьте к нему обратные кавычки и запрос вставки должен работать.

Стоит отметить, что вы не должны называть свою таблицу только цифрамии дефисы.

Для справки приведен полный список зарезервированных ключевых слов: https://dev.mysql.com/doc/refman/8.0/en/keywords.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...