php - 为什么我的阵列不能插入到我的数据库中?
问题描述
我有这段代码,由于某种原因它不会被插入到我的数据库中。它基本上采用一个数组,将其转换为字符串,然后提交值。(如果您需要我编辑以显示我的整个代码,我会这样做)
我在下面遇到问题的代码
$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).
解决方案
您正在使用一个名为的列,该列Show
是 mysql 中的保留关键字,向其添加反引号,插入查询应该可以工作。
值得注意的是,您不应该只使用数字和连字符来命名您的表格。
此处参考保留关键字的完整列表: https ://dev.mysql.com/doc/refman/8.0/en/keywords.html
推荐阅读
- git - 如何显示 git 消息正文(不仅仅是标题)?
- excel - 是否可以遍历 excel 工作表并在每个工作表上运行略有不同的代码?
- php - 在 View 上打印嵌套数组 | 代码点火器
- python - 检测 Python 数据集中的区域
- c++ - C++中的函数指针在二分法中
- ontology - Protege 推理器不推断属性逆的子类
- html - 导航栏元素彼此重叠,而不是间隔开。显示:flex 和 space-inbetween
- python - python Pandas将int转换为float的问题
- r - 如何在R中保留字符串的某些部分
- flutter - Flutter InteractiveViewer onInteractionEnd 恢复到 1.0 的规模