【发布时间】:2020-12-30 10:23:42
【问题描述】:
我的用户可以将图片和消息发布到我的 php 数据库。但我希望他们能够将其中任何一个留空。问题是当我从数据库调用时,我要么显示一个损坏的图片徽标,要么显示空文本框,如果它们留空的话。
我需要我的 SELECT 语句不收集行中包含 NULL 的任何列,因此它不会显示在提要中。
我读过的所有其他帖子都找到一个 NULL 条目并跳过整行。
这不是代码,但可以说明我想要它做什么:
$result = mysqli_query($db, "SELECT * FROM user_posts SELECT '除 NULL 之外的所有行条目';") ;
$result = mysqli_query($db, "SELECT * FROM user_posts ORDER BY post_id DESC;") ;
while ($row = mysqli_fetch_array($result)) {
echo "<div class='Timg_div'>";
if (is_null (post_message)) {
echo "<textarea class='title_post' placeholder='No Title Here'>".$row['post_message']. "</textarea>";
}
else {
echo "<textarea class='title_post' placeholder='No Title Here' style='display: none;'>".$row['post_title']. "</textarea>";
}
if (is_null (post_image)) {
echo "<img src='uploads/".$row['post_image']."' class='image_feed' >";
}
else {
echo "<img src='uploads/".$row['post_image']."' class='image_feed' style='display: none'>";
}
echo "</div>";
}
【问题讨论】:
-
您不能在不同的行上返回不同的列。您应该修复显示结果的代码,以便它检查
null并且不显示该字段。 -
您的另一个选择是更好地定义数据库架构本身,这样列默认值不会给您留下空值,例如默认图片或空字符串。
-
嗨,Barmar,也许我没有正确解释。我只想返回一行。但我想省略其中没有任何数据的任何列,以便用户可以选择上传不带消息的图片或不带图片的消息。我的代码确实尝试将 null 留在后面,但它不适用于 IF 语句或 Case 语句,因此我已开始尝试使用 SELECT 语句。我将编辑我的 OP 以显示我尝试过的代码。
-
嗨,Parttimeturtle,我已经实现了您的建议,但对我来说它看起来有点草率,这就是为什么我试图找到一个更清洁的选择。谢谢。
-
快速思考实验:如果你设法实现你想要的,你将如何编写你的显示代码,以便它知道如果有图像就写一个
img标签,而不是如果没有'吨?如果它有一个值,而不是如果它有一个 NULL,那看起来会不会和写一个不同?
标签: php sql database select null