0

我有的:

一个有 30 个键的数组,一些键只包含一个值,而另一些则包含多个(一个键包含 28 个值)。所以首先我什至不知道这是否可行。但是我尝试过使用我在这里找到的其他示例,但结果为空。

这么说

'name' => somemovie
cast => person1, person2, person3, person4, person5, person6
poster => poster1, poster2, poster3
year => someyear

等等等等

我的问题是:是否可以将这些放在 mysql 表中,如果可以,如何?我正在使用 PHP 5.3。

这是我拥有的代码,也是我几年前使用的下半部分,用于一个简单的数组,它运行良好。没有那么多了。

$imdb = new Imdb();
$movieArray = $imdb->getMovieInfo("$cat");
     extract ($movieArray);
$mysqli = new mysqli("localhost", "custom_xxxx", "xxxxxxxxxx", "custom_xxxx");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";
$result = mysqli_insert_array("imdb", $movieArray);

if( $result['mysqli_error'] ) {
    echo "Query Failed: " . $result['mysqli_error'];
} else {
    echo "Query Succeeded! <br />";
    echo "<pre>";
    print_r($result);
    echo "</pre>";
}

?>
4

2 回答 2

0

您可以使用序列化功能,但我建议不要使用它。创建三个具有以下列的表,这取决于您的数据模型,但它会是这样的:

  • movies(movie_id,year, poster_id, actor_id) - 在这里存储电影
  • actors(actor_id, name, dob) - 在这里存储演员信息。
  • posters(movie_id) - 在这里存储海报信息。

现在,将数据输入数据库。你需要这样的东西:

$imdb = new Imdb();
$movieArray = $imdb->getMovieInfo("$cat");
     extract ($movieArray);
$mysqli = new mysqli("localhost", "custom_xxxx", "xxxxxxxxxx", "custom_xxxx");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";
//the following code assumes $movieArray  like this:
// $movieArray = Array(
//'name' => somemovie,
//'cast' => array(person1, person2, person3, person4, person5, person6)
//'poster' => array(poster1, poster2, poster3)
//'year' => someyear)
foreach($movieArray as $row){
          foreach($row['cast'] as $name){
                    mysqli_query("INSERT INTO actor values($name['name'], $name['dob'])");
          }
          foreach($row['poster'] as $name){
           //insert into poster table 
          }

          //add foreach loop for each table.
}
if( $result['mysqli_error'] ) {
    echo "Query Failed: " . $result['mysqli_error'];
} else {
    echo "Query Succeeded! <br />";
    echo "<pre>";
    print_r($result);
    echo "</pre>";
}

这不是实际代码,因为您没有显示数组结构,但我认为您会明白的。基本上,对于多维数组,您需要使用循环和使用语句foreach将数据插入到数据库表中。insert

对于检索,您将需要使用SELECT语句。最后,如果您没有接触过 SQL 和数据库,请查看SQL 简介

于 2013-07-13T08:16:06.233 回答
0

如果您只想将数组存储为对象并且不想对其运行 sql 查询而不是序列化对象并将其保存为二进制 mysql。

序列化:http: //php.net/manual/de/arrayobject.serialize.php

mysql-二进制:http ://dev.mysql.com/doc/refman/5.1/de/binary-varbinary.html

于 2013-07-13T07:55:27.823 回答