Php MySQL赢得';t将for循环中的最后一项插入数据库
我正在循环一些数据以显示在我的页面上,然后将每个循环插入数据库中的一行(PHP和MySQL的个人学习练习)Php MySQL赢得';t将for循环中的最后一项插入数据库,php,mysql,loops,Php,Mysql,Loops,我正在循环一些数据以显示在我的页面上,然后将每个循环插入数据库中的一行(PHP和MySQL的个人学习练习) for循环运行了5次(例如,有时它可能会多/少循环),我能够成功地插入前4个循环的数据,但我很难弄清楚最后一个循环为什么不会插入数据库 所有5个循环迭代都显示在我的页面上,我不太清楚为什么最后一个循环不会插入到数据库中 下面是我的for循环,其中包括MySQL代码: $artworksIterations=1 count($artworksTitle[$x])=5 for ($x = 0;
for
循环运行了5次(例如,有时它可能会多/少循环),我能够成功地插入前4个循环的数据,但我很难弄清楚最后一个循环为什么不会插入数据库
所有5个循环迭代都显示在我的页面上,我不太清楚为什么最后一个循环不会插入到数据库中
下面是我的for
循环,其中包括MySQL代码:
$artworksIterations=1
count($artworksTitle[$x])=5
for ($x = 0; $x < $artworksIterations; $x++) {
for ($y = 0; $y < count($artworksTitle[$x]); $y++) {
$savedartworksTitle = $artworksTitle[$x][$y];
echo "TITLE: " . $savedartworksTitle . "<br>";
$savedartworksArtist = $artworksArtist[$x][$y];
echo "ARTIST: " . $savedartworksArtist . "<br>";
$savedartworksYear = $artworksYear[$x][$y];
echo "YEAR: " . $savedartworksYear . "<br>";
$savedartworksMedium = $artworksMedium[$x][$y];
echo "MEDIUM: " . $savedartworksMedium . "<br>";
$implodeGene = implode(", ", $artworksGene[$x][$y]);
echo "GENRES: " . $implodeGene;
$savedartworksDisplay = $artworksDisplay[$x][$y];
echo "<br><img src='" . $savedartworksDisplay . "'><br>";
echo "<br>----<br>";
$sql = "INSERT INTO Artworks (title, artist, year, medium, display, genres) VALUES ('$savedartworksTitle', '$savedartworksArtist', '$savedartworksYear', '$savedartworksMedium', '$savedartworksDisplay', '$implodeGene');";
mysqli_query($conn, $sql);
} // end of y
} // end of x
for($x=0;$x<$artworksIterations;$x++){
对于($y=0;$y<计数($artworksTitle[$x]);$y++){
$savedartworksTitle=$artworksTitle[$x][$y];
回显“标题:.$savedartworksTitle.”
“;
$savedartworksArtist=$artworksArtist[$x][$y];
echo“艺术家:.”savedartworksArtist.“
”;
$savedartworksYear=$artworksYear[$x][$y];
回声“年:.$savedartworksYear.”
“;
$savedartworksMedium=$artworksMedium[$x][$y];
echo“介质:.$savedartworksMedium.”
“;
$IMPODEGENE=内爆(“,”,$artworksGene[$x][$y]);
echo“流派:”.$内爆基因;
$savedartworksDisplay=$artworksDisplay[$x][$y];
回声“
”;
回声“
----
”;
$sql=“插入艺术品(标题、艺术家、年份、媒体、显示、流派)值(“$savedartworksTitle”、“$savedartworksArtist”、“$savedartworksYear”、“$savedartworksMedium”、“$savedartworksDisplay”、“$introdegene”);”;
mysqli_查询($conn,$sql);
}//y的结尾
}//x的结尾
任何帮助都将不胜感激。谢谢:)感谢所有帮助我剖析问题的人 结果证明,仅仅是巧合,每次迭代的最后一个循环中的数据都包含一个撇号('),这就是为什么它们没有插入到数据库中(语法错误) 感谢Jacques指出我应该检查错误,这就是它通知我语法错误的地方(同时,感谢jeff坚持我的撇号问题) 为了解决这个问题,我使用了
mysqli\u real\u escape\u string()
函数将数据保存为数据库的安全格式(可能是我首先应该做的事情,学习经验!)
更新的工作代码:
for ($x = 0; $x < $artworksIterations; $x++) {
for ($y = 0; $y < count($artworksTitle[$x]); $y++) {
// display the information on the web page
echo "TITLE: " . $artworksTitle[$x][$y] . "<br>";
echo "ARTIST: " . $artworksArtist[$x][$y] . "<br>";
echo "YEAR: " . $artworksYear[$x][$y] . "<br>";
echo "MEDIUM: " . $artworksMedium[$x][$y] . "<br>";
echo "GENRES: " . implode(", ", $artworksGene[$x][$y]);
echo "<br><img src='" . $artworksDisplay[$x][$y] . "'><br>";
// save data to MySQL safe format
$savedartworksTitle = mysqli_real_escape_string($conn, $artworksTitle[$x][$y]);
$savedartworksArtist = mysqli_real_escape_string($conn, $artworksArtist[$x][$y]);
$savedartworksYear = mysqli_real_escape_string($conn, $artworksYear[$x][$y]);
$savedartworksMedium = mysqli_real_escape_string($conn, $artworksMedium[$x][$y]);
$savedartworksDisplay = mysqli_real_escape_string($conn, $artworksDisplay[$x][$y]);
$implodeGene = mysqli_real_escape_string($conn, implode(", ", $artworksGene[$x][$y]));
// insert data into database
$sql = "INSERT INTO Artworks (title, artist, year, medium, display, genres) VALUES ('$savedartworksTitle', '$savedartworksArtist', '$savedartworksYear', '$savedartworksMedium', '$savedartworksDisplay', '$implodeGene');";
if (mysqli_query($conn, $sql) === FALSE) {
printf("ERROR: %s\n", mysqli_error($conn));
}
echo "<br>----<br>";
} // end of y
} // end of x
for($x=0;$x<$artworksIterations;$x++){
对于($y=0;$y<计数($artworksTitle[$x]);$y++){
//在网页上显示信息
回声“标题:”..artworksTitle[$x][$y]。“
”;
回声“艺术家:”.$artworksArtist[$x][$y]。“
”;
回音“年:”.$artworksYear[$x][$y]。“
”;
回声“介质:”..artworksMedium[$x][$y]。“
”;
回声“流派:”。内爆(“,”,$artworksGene[$x][$y]);
回声“
”;
//将数据保存为MySQL安全格式
$savedartworksTitle=mysqli\u real\u escape\u字符串($conn,$artworksTitle[$x][$y]);
$savedartworksArtist=mysqli\u real\u escape\u字符串($conn,$artworksArtist[$x][$y]);
$savedartworksYear=mysqli\u real\u escape\u字符串($conn,$artworksYear[$x][$y]);
$savedartworksMedium=mysqli\u real\u escape\u字符串($conn,$artworksMedium[$x][$y]);
$savedartworksplay=mysqli\u real\u escape\u字符串($conn,$artworksplay[$x][$y]);
$introdegene=mysqli\u real\u escape\u字符串($conn,introde(“,”,$artworksGene[$x][$y]);
//将数据插入数据库
$sql=“插入艺术品(标题、艺术家、年份、媒体、显示、流派)值(“$savedartworksTitle”、“$savedartworksArtist”、“$savedartworksYear”、“$savedartworksMedium”、“$savedartworksDisplay”、“$introdegene”);”;
if(mysqli_查询($conn,$sql)==FALSE){
printf(“错误:%s\n”,mysqli_错误($conn));
}
回声“
----
”;
}//y的结尾
}//x的结尾
显示echo$sql的输出。此外,尝试在循环后提交更改。是否可能存在重复的数据?如果重复的主键
,则插入到
将失败。你能验证你的表Artwoks
是否有这样一个主键
,并且你的数据是唯一的吗?@JacquesSamar我将主键
链接到第一列id。这是db()的表结构。@MichaelO。只是尝试一下:回显$sql
确实会显示最终的循环迭代,它与前面的循环完全匹配。不确定为什么不将其插入数据库…请改用参数化查询