我有一系列搜索标签'由我的用户提交,例如苹果,橘子,愤怒,爱等。每组这些标签都放入一个数组中。该数组表示由唯一用户提交的一组标记。
我想获取这些标记,将它们提交到数据库中,然后在与这些标记相同的行中获取相应的书籍。这些书必须与标签具有相同类型的阵列结构,以便可以将它们分配回html脚本中的每个用户。
示例:tagsarray[0][1] = 'love'
,booksarray[0][1] = 'the book corresponding to 'love''
我知道如何使用循环和推送数组来完成这项工作。我在下面写了这个脚本,但它根本就没有用。
<?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);
?>
如果有人可以通过我的脚本查明错误和/或提出更好的替代方案,那就太好了。
答案 0 :(得分:0)
正如你明显在学习的那样,你最好学习mysqli_或PDO扩展,因为你在这里使用的mysqli_将在PHP7中不存在。
对于某些great reasons and assistance picking between
,请参阅此内容mysqli
andPDO
你的代码中绝对没有错误检查,你应该检查每个mysql访问函数,以确保nothing出错。
<?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);
?>