使用PHP将数组数据值插入MySQL数据库表

使用PHP将数组数据值插入MySQL数据库表,php,mysql,arrays,Php,Mysql,Arrays,我在做一个巨大的基于数据的项目。我为PHP中的每个数据创建了数组。现在我想把它插入MySQL数据库 <?php $servername = "localhost"; $username = "xxxx"; $password = "xxxxx"; $db_name = "xxxxxxx"; // Create connection $link = mysql_connect($servername, $username, $password); if(!$link){ echo "Fa

我在做一个巨大的基于数据的项目。我为PHP中的每个数据创建了数组。现在我想把它插入MySQL数据库

<?php
$servername = "localhost";
$username = "xxxx";
$password = "xxxxx";
$db_name = "xxxxxxx";

// Create connection
$link = mysql_connect($servername, $username, $password);

if(!$link){
echo "Failed" .mysql_connect_error();
}

mysql_select_db($db_name);

 $data =   array (
        [1] => array(
            'eng_title' => "john",
            'content' => "john",
            'category' => "john",

        ), 
        [2] => array(
            'eng_title' => "john",
            'content' => "john",
            'category' => "john",
        ), 
        [3] => array(
            'eng_title' => "john",
            'content' => "john",
            'category' => "john",
        ), 
     );

if(is_array($data)){

    $sql = "INSERT INTO `table_a`( `eng_title`, `content`, `category`) values";

    $valuesArr = array();
    foreach($data as $row){

        $eng_title = mysql_real_escape_string( $row['eng_title'] );
        $content = mysql_real_escape_string( $row['content'] );
        $category = mysql_real_escape_string( $row['category'] );


        $valuesArr[] = "('$eng_title', '$content', '$category')";
    }

   $sql .= implode(',', $valuesArr);
    echo $sql;
    mysql_query($sql) or exit(mysql_error()); 

}

?>

我在其他程序中使用MySQLi,我想我使用的是最新版本的MySQL,这就是为什么上面的程序不起作用。

因为我认为你在“内爆”中遗漏了一些东西。 试试这个-

if(is_array($data)){

    $sql = "INSERT INTO `table_a`( `eng_title`, `content`, `category`) values";

    $valuesArr = array();
    $last=count($valuesArr);
    $i=0;
    foreach($data as $row){

        $eng_title = mysql_real_escape_string( $row['eng_title'] );
        $content = mysql_real_escape_string( $row['content'] );
        $category = mysql_real_escape_string( $row['category'] );


        $sql .= "('$eng_title', '$content', '$category')";
        if($i<$last)
           $sql .=" , ";
     $i++;
    }


    echo $sql;
    mysql_query($sql) or exit(mysql_error()); 

}
if(is_数组($data)){
$sql=“插入到`表a`(`eng\u title`、`content`、`category`)值中”;
$valuesArr=array();
$last=计数($VALUESAR);
$i=0;
foreach($行数据){
$eng_title=mysql_real_escape_字符串($row['eng_title']);
$content=mysql\u real\u escape\u字符串($row['content']);
$category=mysql\u real\u escape\u字符串($row['category']);
$sql.=“(“$eng_title'、$content'、$category')”;

如果($i使用PDO,则最好在此处查看:

要使用PDO执行insert语句,可以在此处查看更多示例:

因此,对于您的情况,您可以通过两种方式进行:

1.在每个循环上插入一行:

<?php 

$data =   array (
    1 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",

    ), 
    2 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",
    ), 
    3 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",
    ), 
 );

$servername = "localhost";
$username = "xxxx";
$password = "xxxxx";
$db_name = "xxxxxxx";
$pdo = new PDO("mysql:host=$servername;dbname=$db_name", "$username", "$password");
foreach ($data as $key => $value) {
    $eng_title = mysql_real_escape_string( $value['eng_title'] );
    $content = mysql_real_escape_string( $value['content'] );
    $category = mysql_real_escape_string( $value['category'] );

    $query = $db->prepare('INSERT INTO table_a(eng_title, content, category) VALUES(:title, :content, :category)');
    $query->bindParam("title", $eng_title);
    $query->bindParam("content", $content);
    $query->bindParam("category", $category);
    $query->execute();
}

<代码>从$SQL中删除“(当你做回音时,你能给我们什么样的$SQL)在你的前段插入你的SQL查询吗?他需要“,”不是用来插入多个行的空间,提醒MySQL**函数被拒绝了很多年。考虑使用MySQLI* *。但是在这个CAS中,SQL语句将有“最后,这将导致语法错误,因此我建议在执行$sql之前测试您是否在数组的末尾(if(sizeof(array)…)。=“,”仅当您有另一个值要插入时才添加它对不起@ELOUFIRHatim,您现在可以重新访问吗?我认为现在可以了
<?php 

$data =   array (
    1 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",

    ), 
    2 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",
    ), 
    3 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",
    ), 
 );

$servername = "localhost";
$username = "xxxx";
$password = "xxxxx";
$db_name = "xxxxxxx";
$pdo = new PDO("mysql:host=$servername;dbname=$db_name", "$username", "$password");
foreach ($data as $key => $value) {
    $eng_title = mysql_real_escape_string( $value['eng_title'] );
    $content = mysql_real_escape_string( $value['content'] );
    $category = mysql_real_escape_string( $value['category'] );

    $query = $db->prepare('INSERT INTO table_a(eng_title, content, category) VALUES(:title, :content, :category)');
    $query->bindParam("title", $eng_title);
    $query->bindParam("content", $content);
    $query->bindParam("category", $category);
    $query->execute();
}
<?php 

$data =   array (
    1 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",

    ), 
    2 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",
    ), 
    3 => array(
        'eng_title' => "john",
        'content' => "john",
        'category' => "john",
    ), 
 );

$servername = "localhost";
$username = "xxxx";
$password = "xxxxx";
$db_name = "xxxxxxx";
$pdo = new PDO("mysql:host=$servername;dbname=$db_name", "$username", "$password");

$query = "INSERT INTO table_a(eng_title, content, category) VALUES";

$counter = 0;
$arraySize = sizeof($data);
foreach ($data as $key => $value) {
    $eng_title = mysql_real_escape_string( $value['eng_title'] );
    $content = mysql_real_escape_string( $value['content'] );
    $category = mysql_real_escape_string( $value['category'] );

    $counter++;
    $query .= "($eng_title, $content, $category)";
    if($counter < $arraySize)
        $query .= ",";
}
$pdo->query($query);