[英]how do I SELECT all from multiple tables using PHP
我的数据库中有3个相同的表(相同的列数和列名),应该以3种语言提供内容,用户首选的语言作为url参数传递。 这就是我查询一个表的方式:
$sql = "SELECT * FROM news_en WHERE time > $from";
$result = $conn->query ( $sql );
if ($result->num_rows > 0) {
while ( $row = $result->fetch_assoc () ) {
echo "Post Title: " . $row ["title"] . "<br>" . "Post Text: " . $row ["article"] . "<br> " . "Time: " . $row ["time"] . "<br>" . "Image: " . "<a href=" . $row ["image"] . ">click for post image</a><br>" . "Source: " . $row ["source"] . "<br><br>";
}
} else {
echo "0 results";
}
此查询已正确执行。 但是,当我尝试使用3种可用语言进行翻译时
$sql = "SELECT * FROM news_en, news_de, news_ru WHERE time > $from";
我收到错误消息:
Notice: Trying to get property of non-object in C:\xampp\htdocs\..... on line 54
0 results
第54行是
if ($result->num_rows > 0)
因此,我假设查询未正确执行。 但是,如果我通过转到phpMyAdmin
SQL
直接执行相同的查询,则会从所有3个表中给出正确的结果。
我的PHP在做什么错?
我认为您当然需要研究数据库设计!
更好的数据库设计是将所有语言字符串保存在一个表中,并添加一个包含语言信息的附加列。
您的查询目前不起作用,因为SELECT查询总是返回相似类型的结果对象。 同时从不同的表中选择并不能保证结果对象的一致性,因为这些表可能具有不同的列。
当您选择具有相同名称的列时,mysql会感到困惑。 解决方案是使用别名。
$sql = "SELECT en.col1 AS col1en, en.col2 AS col2en, de.col1 AS col1de, de.col2 AS col2de, ru.col1 AS col1ru, ru.col2 AS col2ru
FROM news_en AS en, news_de AS de, news_ru AS ru WHERE time > $from";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.