我试图把我的SQL查询放在一个单独的文件中,以便不再重复它们。我试图为此创建一个类和函数,但出现了一些问题。我无法弄清楚为什么。我甚至怀疑这是否是继续进行的好方法,因为我没有在网上找到类似的例子。查询 - 把他们放在课堂上?
原代码,并导致我想获得那些者:
//this works but must be refactored
$book = $_POST['book'];
$select_titles = mysql_query("
SELECT booktitles.id_title, booktitles.title, booktitles.id_book
FROM booktitles
WHERE booktitles.id_book = $book
") or die(mysql_error());
while($selected_titles = mysql_fetch_assoc($select_titles))
{
$id_title = $selected_titles['id_title'];
$title = $selected_titles['title'];
echo $title."<br/>";
// now the second query, wich needs the $id_title
$select_content = mysql_query("
SELECT content.id_content, content.content, content.id_title
FROM content
WHERE content.id_title = $id_title
") or die(mysql_error());
while($selected_content = mysql_fetch_assoc($select_content))
{
$id_content = $selected_content['id_content'];
$content = $selected_content['content'];
echo $content."<br/>;
}
}
我试图以这种方式(请注意,就像我在前面的例子中那样我无法合并这两个查询将这一,因为我必须能够分别访问它们):
// file : query.php
class Queries
{
public function selectTitles($id_book)
{
$select_titles = mysql_query("
SELECT booktitles.id_title, booktitles.title, booktitles.id_book
FROM booktitles
WHERE booktitles.id_book = $book
") or die(mysql_error());
while($selected_titles = mysql_fetch_assoc($select_titles))
{
$id_title = $selected_titles['id_title'];
$title = $selected_titles['title'];
echo $title."<br/>";
}
}
public function selectContent($id_title)
{
$select_content = mysql_query("
SELECT content.id_content, content.content, content.id_title
FROM content
WHERE content.id_title = $id_title
") or die(mysql_error());
while($selected_content = mysql_fetch_assoc($select_content))
{
$id_content = $selected_content['id_content'];
$content = $selected_content['content'];
echo $content."<br/>;
}
}
}
// file : books.php
require_once('query.php');
$book = $_POST['book'];
$display_titles = new Queries;
$display_titles->selectTitles($book);
while($id_title)
{
$display_content = new Queries;
$display_content->selectContent($id_title);
// this does not work. Furthermore, I must be able to add something here (like a form which uses the values) --> I seem not allowed to do that
}
这是行不通的。任何想法如何处理这将非常感谢!
(注:这里是一个回答类似的问题:modify php oop mysql query)
在此行上添加双引号:'echo $ content。“
'此外,您还没有从函数返回任何内容:'selectTitles'。books.php中的$ id_title的值是什么? – 2011-04-18 14:36:10
hi观察者, id_title应该由第一个查询返回...谢谢! – Raphael 2011-04-18 14:48:11
我的观点是它没有被返回,你所做的只是回应。一旦这个函数完成,$ id_title不再被设置。 – 2011-04-18 14:56:04