PHP-列计数不为';不匹配第1行的值计数
任何指点都将不胜感激-谢谢 我收到“第1行的列计数与值计数不匹配”我猜这是因为我返回的数据数组不包含在(),(),(),。。?如何做到这一点PHP-列计数不为';不匹配第1行的值计数,php,mysql,insert,Php,Mysql,Insert,任何指点都将不胜感激-谢谢 我收到“第1行的列计数与值计数不匹配”我猜这是因为我返回的数据数组不包含在(),(),(),。。?如何做到这一点 <?php // open the database connection require('connection.php'); // build the string to populate the database if (isset($_POST['submit'])) { $buffer = ""; $returnedData =
<?php
// open the database connection
require('connection.php');
// build the string to populate the database
if (isset($_POST['submit'])) {
$buffer = "";
$returnedData = $_POST['data'];
// escape
$returnedData = mysqli_real_escape_string($connection, $returnedData);
foreach ( $returnedData as $data )
{
$buffer .= $data['week_date'];
$buffer .= $data['crew_chief'];
$buffer .= $data['monday_crew'];
$buffer .= $data['tuesday_crew'];
$buffer .= $data['wednesday_crew'];
$buffer .= $data['thursday_crew'];
$buffer .= $data['friday_crew'];
$buffer .= $data['saturday_crew'];
$buffer .= $data['sunday_crew'];
$buffer .= $data['instrument'];
$buffer .= $data['monday_location'];
$buffer .= $data['tuesday_location'];
$buffer .= $data['wednesday_location'];
$buffer .= $data['thursday_location'];
$buffer .= $data['friday_location'];
$buffer .= $data['saturday_location'];
$buffer .= $data['sunday_location'];
$buffer .= ", ";
}
$buffer = rtrim($buffer, ", ");
} // end if
// perform the database insert
$insertQuery = "INSERT INTO log_dates (";
$insertQuery .= " week_date, crew_chief, monday_crew, tuesday_crew, wednesday_crew, thursday_crew, friday_crew, saturday_crew, sunday_crew, instrument, monday_location, tuesday_location, wednesday_location, thursday_location, friday_location, saturday_location, sunday_location";
$insertQuery .= ") VALUES (";
$insertQuery .= "'{$returnedData}'";
$insertQuery .= ")";
$result = mysqli_query($connection, $insertQuery);
// redirect on finish
if ($result) {
header("Location: http://www..com/");
} else {
die("Database query failed. " . mysqli_error($connection));
}
// close database connection
mysqli_close($connection);
?>
您的代码毫无意义
$returnedData = $_POST['data'];
一切都很好,很漂亮,但你确实如此
$returnedData = mysqli_real_escape_string($connection, $returnedData);
它返回一个字符串。然后将该字符串作为数组处理
foreach ( $returnedData as $data )
并从中构建另一个字符串
然后尝试执行SQL查询。。。但是完全忽略您构建的这个新字符串
$insertQuery = "INSERT INTO log_dates (";
[[...snip...]]
$insertQuery .= "'{$returnedData}'";
$insertQuery .= ")";
使用这个现在已经损坏的前数组,即现在的字符串
例如,您正在生成一个如下所示的查询
INSERT INTO log_dates (long list of fields)
VALUES (a single value here)
您正在使用mysqli。。。没有理由不使用带有占位符的准备好的语句。你没有必要试图逃避你自己的价值观,尤其是因为你在这一部分做得完全错误。你的代码毫无意义
$returnedData = $_POST['data'];
一切都很好,很漂亮,但你确实如此
$returnedData = mysqli_real_escape_string($connection, $returnedData);
它返回一个字符串。然后将该字符串作为数组处理
foreach ( $returnedData as $data )
并从中构建另一个字符串
然后尝试执行SQL查询。。。但是完全忽略您构建的这个新字符串
$insertQuery = "INSERT INTO log_dates (";
[[...snip...]]
$insertQuery .= "'{$returnedData}'";
$insertQuery .= ")";
使用这个现在已经损坏的前数组,即现在的字符串
例如,您正在生成一个如下所示的查询
INSERT INTO log_dates (long list of fields)
VALUES (a single value here)
您正在使用mysqli。。。没有理由不使用带有占位符的准备好的语句。没有必要自己尝试和逃避你的价值观,尤其是因为你在这一部分做得完全错误。至少-回显你的$insertQuery,看看它是什么样子。您将$returnedData作为单个变量传递到查询中,但列出了16列。您使用$buffer
的目的是什么?在哪里使用了$buffer
?尝试回显您的查询。至少-回显您的$insertQuery以查看它的外观。您将$returnedData作为单个变量传递到查询中,但列出了16列。您使用$buffer
的目的是什么?您在哪里使用了$buffer
?尝试回显您的查询。如果我回显我的值,我会收到以下消息:“2013-07-08-2013-07-14,Alan,1,2,3,4,5,6,7,8,9,11,12,14,15,2013-07-08-2013-07-14,Brad,1,2,3,4,6,8,9,10,11,12,12,13,14”,感谢您的帮助。我在每一组中都缺少()吗?我可以添加这个吗?您正在将这些值包装在“
”中,因此整个字符串都被压缩为一个值。即使删除了”
,您仍然会遇到sql问题,因为2013-07-08
需要单独引用,否则这将是一个数学问题。2013减7减8=1998,Alan
被视为字段,而不是名称,等等。。。你真的需要仔细阅读准备好的语句和占位符。你的代码现在非常危险。也许我会像你建议的那样使用预先准备好的语句。如果我重复我的价值观,我会收到这样的信息:“2013-07-08-2013-07-14,Alan,1,2,3,4,5,6,6,7,8,8,9,9,10,10,11,11,12,13,14,15,2013-07-08-2013-07-14,Brad,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15”,谢谢你的帮助。我在每一组中都缺少()吗?我可以添加这个吗?您正在将这些值包装在“
”中,因此整个字符串都被压缩为一个值。即使删除了”
,您仍然会遇到sql问题,因为2013-07-08
需要单独引用,否则这将是一个数学问题。2013减7减8=1998,Alan
被视为字段,而不是名称,等等。。。你真的需要仔细阅读准备好的语句和占位符。你的代码现在非常危险。也许我会像你建议的那样使用预先准备好的语句。