Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-列计数不为';不匹配第1行的值计数_Php_Mysql_Insert - Fatal编程技术网

PHP-列计数不为';不匹配第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 =

任何指点都将不胜感激-谢谢

我收到“第1行的列计数与值计数不匹配”我猜这是因为我返回的数据数组不包含在(),(),(),。。?如何做到这一点

<?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
被视为字段,而不是名称,等等。。。你真的需要仔细阅读准备好的语句和占位符。你的代码现在非常危险。也许我会像你建议的那样使用预先准备好的语句。