Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 在这种情况下使用数组的正确方法或专家建议?_Php_Mysql_Arrays - Fatal编程技术网

Php 在这种情况下使用数组的正确方法或专家建议?

Php 在这种情况下使用数组的正确方法或专家建议?,php,mysql,arrays,Php,Mysql,Arrays,情况是,我有一个数据库,它有三个表,我想用一个表单向每个表插入数据 在数据库中,我有三个表(表a(个人资料)、表b(属性(年龄、身高)和表c(最喜欢的书(体裁、标题) 在class.php中,我有三个查询同时将数据插入到三个不同的表中 class nameOfClass{ function insertData(){ 在查询_1中,将p_名称a和p_姓氏插入表_a $query_1 = “ INSERT INTO table_a SET p_name=:p_name, p_surname=:

情况是,我有一个数据库,它有三个表,我想用一个表单向每个表插入数据

在数据库中,我有三个表(表a(个人资料)、表b(属性(年龄、身高)和表c(最喜欢的书(体裁、标题)

在class.php中,我有三个查询同时将数据插入到三个不同的表中

class nameOfClass{

function insertData(){
在查询_1中,将p_名称a和p_姓氏插入表_a

$query_1 = “ INSERT INTO table_a SET p_name=:p_name, p_surname=:p_surname”;

$stmt_1 = $this->conn->prepare(query_1);

$this->p_name=$this->p_name;
$this->p_surname=$this->p_surname;

$stmt_1->bindParam(':p_name', $this->p_name);
$stmt_1->bindParam(':p_surname', $this->p_surname);

if($stmt_1->execute()){
在查询_2中,p_id值来自表_a上最后插入的id,并与a_年龄和a_高度一起插入表_b

在下一个类似于表b的查询中,p_id将来自表a中最后插入的id,并与b_类型和b_名称列一起插入表c。b_类型和b_值是数组。因为p_名称可以有多个图书列表

    $query_2 = "INSERT INTO table_b SET p_id=:p_id, a_age=:a_age, a_height=:a_height;

            INSERT INTO table_c p_id=:p_id, b_type=:b_type, b_name=:b_name”;

    $stmt_2 = $this->conn->prepare($query_2);

        $this->p_id=$this->conn->lastInsertId();
        $this->a_age=$this->a_age;
        $this->a_height=$this->a_height;

        foreach($this->b_type AS $key => $value{
        $this->b_type=$value;
        $this->b_name=$this->b_name[$key];  
        }       

        $stmt_2->bindParam(':p_id', $this->p_id);
        $stmt_2->bindParam(':a_age', $this->a_age);
        $stmt_2->bindParam(':a_height', $this->a_height);



        $stmt_2->bindParam(':b_type', $this->b_type;
        $stmt_2->bindParam(':b_name', $this->b_name);


            if($stmt_2->execute()){
                         return  true;
                    }else{
                        return false;
                     }
    }

}
在form.php上,在这个表单中,它连接到db,检索类,并在表单提交时执行函数

<?php

include_once 'config/database.php';
include_once 'objects/class.php';

$database = new Database();
$db = $database->getConnection();

$nameofclass = new nameOfClass($db);

if($_POST){
    $nameofclass ->p_name=$_POST['p_name'];
    $nameofclass ->p_surname=$_POST['p_surname'];
    $nameofclass ->a_age=$_POST['a_age'];
    $nameofclass ->a_height=$_POST['p_height'];
    $nameofclass ->b_type=$_POST['b_type'];
    $nameofclass ->b_name=$_POST['b_name'];

 if($nameofclass->insertData()){

echo “success” ;
} else {

echo “error”;
 }
}

<form method="post">

到目前为止,你尝试了什么?你能给我们一个表c查询的例子,告诉我们它到底是如何不起作用的吗?另外,如果你不熟悉一些东西,beats。事实上,这就是全部,我的代码,我只知道它不会保存记录。而且一开始没有太多错误代码,没有语法错误或其他什么。我我希望提出建议,我只知道我的代码有点问题。好吧,它现在正在工作,除了在b_name列的表c中插入,$this->b_name=$this->b_name[$key];这不起作用,它无法向数据库发送值或插入。阅读我发布的链接,如果你收到数组,你必须遍历它并分别存储每个条目。另外,我在输入框中输入了两个值,但只插入了一个值,即第二个值,例如,我在输入框中键入,Scfi(b_类型)、star trek(b_名称),然后我使用jquery添加了另一个输入框,并输入horror(b_类型)、carrie(b_名称)。只有horror被发送或插入到数据库的表中
<?php

include_once 'config/database.php';
include_once 'objects/class.php';

$database = new Database();
$db = $database->getConnection();

$nameofclass = new nameOfClass($db);

if($_POST){
    $nameofclass ->p_name=$_POST['p_name'];
    $nameofclass ->p_surname=$_POST['p_surname'];
    $nameofclass ->a_age=$_POST['a_age'];
    $nameofclass ->a_height=$_POST['p_height'];
    $nameofclass ->b_type=$_POST['b_type'];
    $nameofclass ->b_name=$_POST['b_name'];

 if($nameofclass->insertData()){

echo “success” ;
} else {

echo “error”;
 }
}

<form method="post">
     <input type="text" name="p_name">
     <input type="text" name="p_surname">
      <input type="text" name="a_age">
      <input type="text" name="a_height">
      <input type="text" name="b_type[]">
      <input type="text" name="b_name[]">