从mySQL获取值到多维数组



我有一个用户提交的'搜索标签'数组,例如苹果,橙子,愤怒,爱情等。这些标签的每一组都被放入一个数组中。该数组表示由唯一用户提交的一组标记。

我想获取这些标签,将它们提交到数据库中,并获取与这些标签在同一行中的相应书籍。图书必须与标签具有相同的数组结构,这样才能将它们分配给html脚本中的每个用户。

示例:tagsarray[0][1] = 'love', booksarray[0][1] = 'the book corresponding to 'love''

我有一个想法,我可以让这个工作,使用循环和push数组。我在下面写了这个脚本,,但它根本不起作用。

<?php

$tags = array(array("apples","oranges", "pears"), 
              array("sun", "blood"), 
              array("anger", "love"));
$con = mysql_connect("Stories.mysql.anyhost.com", "user", "password");
mysql_select_db("Stories");
foreach ($tags as $tag) {
    $one = array();
    $two = array();
    for ($i = 0; $i < count($tag); $i++) {
        $tag_value = $tag[$i];
        $selectbooks = "SELECT * FROM Journeys 
                        WHERE book_tags = '$tag_value'";
        $query = mysql_query($selectbooks);
        while ($row = mysql_fetch_assoc($query)) {
            $one[] = $row['books'];
        }
        $two[] = $one;
    }
}
echo json_encode($two); 
// should echo out [ [books1, books2], [books3, books4], [books5, books6] ] - but instead it returns [[]] 
mysql_close($con);
?>

如果有人能指出我的脚本的错误和/或建议一个更好的替代方案,那就太好了。

显然你正在学习,你最好学习mysqli_或PDO扩展,因为你在这里使用的mysqli_在PHP7中不存在。

mysqliPDO之间选择有很大的原因和帮助

你的代码中绝对没有错误检查,你应该检查每个mysql访问函数以确保没有任何错误。

<?php
    // force some error reporting in case you have error reporting turned off.
    error_reporting(E_ALL); 
    ini_set('display_errors', 1);
    $tagsets = array(array("apples","oranges", "pears"), 
                     array("sun", "blood"), 
                     array("anger", "love"));
    $con = mysql_connect("Stories.mysql.anyhost.com", "user", "password");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    }
    if (! mysql_select_db("Stories", $con) ) {
        die ('Can't select the Sories database : ' . mysql_error());
    }

    $toJson = array();  
    foreach ($tagsets as $tagset) {
        $one = array();
        foreach ( $tagset as $idx => $tag ) {
            $sql = "SELECT * FROM Journeys WHERE book_tags = '$tag'";
            $result = mysql_query($sql);
            if ( ! $result ) {
                echo mysql_error();
                exit;
            }
            while ( $row = mysql_fetch_assoc($result, $con) ) {
                $one[] = $row['books'];
            }
            $toJson[] = $one;
        }
    }
    echo json_encode($toJson); 
    mysql_close($con);
?>

相关内容

  • 没有找到相关文章

最新更新