Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Database - Fatal编程技术网

在PHP中创建要插入数据的数据库?

在PHP中创建要插入数据的数据库?,php,mysql,database,Php,Mysql,Database,我正在学习php/sql/wamp,在一个学习项目中遇到了很多麻烦 我在下面有一个txt文件,我终于想出办法将它加载到php中,但是我不知道如何创建数据库sql,以便将数据插入并执行查询。。。是否有好的链接、教程或示例代码?下面是我的php和txt代码 <?php error_reporting(E_ERROR); $header = '<?xml version="1.0" encoding="UTF-8"?>'."\n<datalist>"; $content

我正在学习php/sql/wamp,在一个学习项目中遇到了很多麻烦

我在下面有一个txt文件,我终于想出办法将它加载到php中,但是我不知道如何创建数据库sql,以便将数据插入并执行查询。。。是否有好的链接、教程或示例代码?下面是我的php和txt代码

<?php

error_reporting(E_ERROR);
$header = '<?xml version="1.0" encoding="UTF-8"?>'."\n<datalist>";
$content = $header."\n".file_get_contents("data.txt")."\n</datalist>";
$ob = simplexml_load_string($content);
$json = json_encode($ob);
$array = json_decode($json, true);
$alldata = $array["pub"];

foreach ($alldata as $key => $value) { //access all data in loop
$id = $value["ID"];
$title = $value["title"];
$year = $value["year"];
$booktitle = $value["booktitle"];
$pages = $value["pages"];
$authors = implode(",", $value["authors"]["author"]);
//All process data can available here .run your sql query for insert.
}

?>
$value){//访问循环中的所有数据
$id=$value[“id”];
$title=$value[“title”];
$year=$value[“year”];
$booktitle=$value[“booktitle”];
$pages=$value[“pages”];
$authors=内爆(“,”,$value[“authors”][“author”]);
//此处可以使用所有流程数据。请运行sql查询以进行插入。
}
?>
下面是我的txt文件。。相同格式,但适用于50mb的数据

<pub>
<ID>0</ID>
<title>Regression Time Warping for Similarity Measure of Sequence</title>
<year>2004</year>
<booktitle>CIT</booktitle>
<pages>826-830</pages>
<authors>
        <author>Hansheng Lei</author>
        <author>Venu Govindaraju</author>
</authors>
</pub>
<pub>
<ID>1</ID>
<title>A Computational Model for Face Location Based on Cognitive Principles</title>
<year>1992</year>
<booktitle>AAAI</booktitle>
<pages>350-355</pages>
<authors>
        <author>Venu Govindaraju</author>
        <author>Sargur N. Srihari</author>
        <author>David B. Sher</author>
</authors>
</pub>

0
序列相似性度量的回归时间扭曲
2004
CIT
826-830
雷汉生
戈文达拉朱静脉
1.
基于认知原理的人脸定位计算模型
1992
AAAI
350-355
戈文达拉朱静脉
萨尔古尔斯里哈里酒店
大卫·B·谢尔

在for循环之前,您需要连接到数据库,然后在for循环中插入从数据文件读取的每一行。你的桌子结构是什么样的?您是否尝试过自己编写任何SQL语句

连接到数据库:


插入数据库:

在MySQL中创建表。然后使用mysqli(或PDO)插入数据

/**
 *  Connect to database
 */
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

/**
 *  Loop data
 */
foreach ($alldata as $key => $value) { //access all data in loop
    /**
     *  Insert row.  This assumes that your table columns are in the 
     *  same order as the variables as they are given below
     */
    $authors = implode(",", $value["authors"]["author"]);
    $stmt = $mysqli->prepare("INSERT INTO your_table VALUES (?, ?, ?, ?, ?, ?)");
    $stmt->bind_param('ssssss', 
                       $value["ID"], 
                       $value["title"], 
                       $value["year"], 
                       $value["booktitle"], 
                       $value["pages"], implode(",", $value["authors"]["author"]));
    $stmt->execute();
}

注意,使用MySQL可以插入多个记录。(.)您可以这样做以减少插入的数量,但这会使构建查询更加复杂

还要注意的是,对这些数据使用单个表并不是最优的。理想情况下,您将使用三个表:

  • 书籍=所有书籍
  • 作者=所有作者
  • Author\u book=一本书与其众多作者之间的关系
使用单个表时,请考虑以下问题:

  • 当其中一个条目包含逗号时会发生什么情况?您的代码使用逗号内爆作者列表,因此。。。 戈文达拉朱静脉 萨尔古尔斯里哈里酒店 大卫·B·谢尔博士 …成为Venu Govindaraju、Sargur N.Srihari、David B.Sher博士
  • 你如何找到所有作者A和作者B所写的书?您必须创建一些过于复杂的方法来搜索数据库中的author列

$ob=simplexml\u load\u string($content)$json=json_encode($ob)$array=json_decode($json,true);为什么要将其加载到对象中,然后对其进行json编码,然后将其解码到数组中?我是否错过了为什么不从一开始就使用对象的原因?你是在建议$array=$ob吗?关于MySQL以及如何在PHP中与它交互,这里有成千上万的教程,对于SO和受欢迎的Google来说都是如此。我建议$ob=simplexml\u load\u string($content);这就是你所需要的。您正在创建一个对象,然后将其转换为另一个对象,然后将其转换为数组。您可以通过$ob对象访问所需的属性。不过,关于mysql相关问题,请阅读PDO或mysqli。如果你不明白我的意思,我会帮你清除不必要的代码。对过时的文章投了反对票。请建议一些没有被弃用的东西(mysql_*):p我不应该使用wamp吗?非常深入地感谢你,我正在尝试使用它。。。我应该不使用wamp吗?在没有提到data.txt文件的情况下,您是如何做到这一点的?我不明白如果它不知道要加载什么文件,它怎么能加载?