我有一个用户提交的'搜索标签'数组,例如苹果,橙子,愤怒,爱情等。这些标签的每一组都被放入一个数组中。该数组表示由唯一用户提交的一组标记。
我想获取这些标签,将它们提交到数据库中,并获取与这些标签在同一行中的相应书籍。图书必须与标签具有相同的数组结构,这样才能将它们分配给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中不存在。
在
mysqli
和PDO
之间选择有很大的原因和帮助
你的代码中绝对没有错误检查,你应该检查每个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);
?>