Php 将变量数组发送到另一个页面并插入mysql

Php 将变量数组发送到另一个页面并插入mysql,php,mysql,Php,Mysql,我有一个包含数据库数据的页面。用户可以修改这些数据,然后将其插入数据库 我有一个隐藏的输入类型-“$ppdata 这会将$ppdata变量发送到另一个页面(不需要显示该表单) 我在下一页中收到如下数组: $ippdata = 0; foreach ($_POST["data"] as $dat){ $dataarray[$ippdata] = $dat; $ippdata++; } 然后我尝试插入数据: $data = count($dataarray); for($conta

我有一个包含数据库数据的页面。用户可以修改这些数据,然后将其插入数据库

我有一个隐藏的输入类型-
“$ppdata

这会将
$ppdata
变量发送到另一个页面(不需要显示该表单)

我在下一页中收到如下数组:

$ippdata = 0;
foreach ($_POST["data"] as $dat){
   $dataarray[$ippdata] = $dat;
   $ippdata++;
}
然后我尝试插入数据:

$data = count($dataarray);

for($contador = 0; $contador < $data; $contador++){
   $str[] = "('{$dataarray[$contador]}' )";
 }    
$s = implode(',',$str);
$sql = mysql_query("INSERT INTO pp (data) VALUES $s;");
$data=count($dataarray);
对于($contador=0;$contador<$data;$contador++){
$str[]=“('{$dataarray[$contador]}')”;
}    
$s=内爆(“,”,$str);
$sql=mysql\u查询(“插入pp(数据)值$s;”;
这将在数据库中插入一个空白字段。4-因为该用户只有4条记录

注意:
$ppdata
变量是从数据库中获取的,只需通过JQuery单击数据即可对其进行编辑。不可能在第一页插入更多记录。这将传递一个包含4个位置的数组。每个位置包含数据库中的一条记录。(4条记录,因为这是对应于用户的数据。用户可以有更多记录)


谢谢!

我想您是在试图保存JSON字符串或其他东西

缩短方法:

if(!empty($_POST["data"])) {
    $data = json_encode($_POST["data"]);
}

$query = mysql_query("INSERT INTO pp (data) VALUES '".$data."'");
这是较短的路

您可以通过像这样解码数据字段来获得这些数据

$data = json_decode($db_record, true); //true for returning array.
$data = count($dataarray);
$str = "";

for($contador = 0; $contador < $data; $contador++){
   $str.= "('{$dataarray[$contador]}' )";
   if($data != $contador){
    $str.= ", ";
   }
 }    
$query = "INSERT INTO pp (data) VALUES ".$str;
$sql = mysql_query($query);
$mysqli = new mysqli($host, $username, $password, $db_name);

/* check connection */  
if (mysqli_connect_errno()) {       
    printf("Connect failed: %s\n", mysqli_connect_error());         
    exit();     
}

$stmt = $mysqli->prepare("INSERT INTO pp (data) VALUES (?);");
    for($contador = 0; $contador < $data; $contador++){
       $stmt->bind_param('s', $dataarray[$contador]);
       $stmt->execute();
     }      
$stmt->close(); 
如果你真的想用你自己的方式去做,那么还有一个更短的方法

if(!empty($_POST["data"])) {
    $str = '';
    foreach($_POST["data"] as $key => $data) {
       $str .= '{'.$data.'}'. (key($_POST["data"]) != $key ? ',' : '');
    }
}

$query = mysql_query("INSERT INTO pp (data) VALUES '".$str."'");

我想试试这样的

$data = json_decode($db_record, true); //true for returning array.
$data = count($dataarray);
$str = "";

for($contador = 0; $contador < $data; $contador++){
   $str.= "('{$dataarray[$contador]}' )";
   if($data != $contador){
    $str.= ", ";
   }
 }    
$query = "INSERT INTO pp (data) VALUES ".$str;
$sql = mysql_query($query);
$mysqli = new mysqli($host, $username, $password, $db_name);

/* check connection */  
if (mysqli_connect_errno()) {       
    printf("Connect failed: %s\n", mysqli_connect_error());         
    exit();     
}

$stmt = $mysqli->prepare("INSERT INTO pp (data) VALUES (?);");
    for($contador = 0; $contador < $data; $contador++){
       $stmt->bind_param('s', $dataarray[$contador]);
       $stmt->execute();
     }      
$stmt->close(); 
$data=count($dataarray);
$str=”“;
对于($contador=0;$contador<$data;$contador++){
$str.=“('{$dataarray[$contador]}')”;
如果($data!=$contador){
$str.=“,”;
}
}    
$query=“插入pp(数据)值”。$str;
$sql=mysql\u query($query);
或者你可以试着用这样的东西

$data = json_decode($db_record, true); //true for returning array.
$data = count($dataarray);
$str = "";

for($contador = 0; $contador < $data; $contador++){
   $str.= "('{$dataarray[$contador]}' )";
   if($data != $contador){
    $str.= ", ";
   }
 }    
$query = "INSERT INTO pp (data) VALUES ".$str;
$sql = mysql_query($query);
$mysqli = new mysqli($host, $username, $password, $db_name);

/* check connection */  
if (mysqli_connect_errno()) {       
    printf("Connect failed: %s\n", mysqli_connect_error());         
    exit();     
}

$stmt = $mysqli->prepare("INSERT INTO pp (data) VALUES (?);");
    for($contador = 0; $contador < $data; $contador++){
       $stmt->bind_param('s', $dataarray[$contador]);
       $stmt->execute();
     }      
$stmt->close(); 
$mysqli=newmysqli($host、$username、$password、$db\u name);
/*检查连接*/
如果(mysqli_connect_errno()){
printf(“连接失败:%s\n”,mysqli_Connect_error());
退出();
}
$stmt=$mysqli->prepare(“插入pp(数据)值(?);”;
对于($contador=0;$contador<$data;$contador++){
$stmt->bind_param('s',$dataarray[$contador]);
$stmt->execute();
}      
$stmt->close();

您没有在隐藏输入中发布任何值:



您可以在pp(数据)值$s中插入
echo”;"
并查看实际发送到数据库的查询。此外,您还应该对从postPlease接收到的数据进行转义。请告诉我,您也不是gunna,可以这样插入数据吗?没有sql注入预防技术?您的
没有
数据被插入,但只有空白字段。4空白字段如果u
echo$s
y你应该看看字符串的构造是否正确。我认为这些解决方案都不起作用。我认为可能是因为html帖子的缘故。
可能有问题。(谢谢你的帮助)我错过了如何使用stmt进行连接,请立即尝试。这些解决方案都不起作用。我想可能是因为html帖子的缘故。
可能有问题。(感谢您的帮助)