php - 如何检查内容是否已经在数据库中,如果没有则输入它?

标签 php mysql wordpress

我制作了一个简单的 php 类,它从 astrology.com 中提取星座的每日星座运势,我想在 wordpress 中使用它(使用 $wpdb)。

工作原理(理论上):

  1. 检查内容是否已经在数据库中(并返回)。
  2. 如果该内容不在数据库中,则添加它(调用我创建的 php 类)。
  3. 如果该类没有返回内容,则检查数据库是否有前一天的条目并将其返回。
  4. 如果这些都不起作用,则返回错误消息

问题是我被困在第 2 点和第 3 点之间...(我不知道如何检查类(class)是否返回了一些内容,如果没有显示前一天的内容)

<?php require('./wp-blog-header.php');

$horoscope = new Horoscope(); global $wpdb;

$config = array('sign' => 'cancer',
                'type' => 'daily',
                'date' => date('Y-m-d'),);

$query = $wpdb->get_results("SELECT * FROM `wp_horoscope` WHERE zodiacal_sign = '".$config['sign']."' AND last_updated = '".$config['date']."';", ARRAY_A);

// step 1
if( $query && $query['0']['content'] != '' ){ $content = $query['0']['content']; }

// step 2
elseif( empty($query) || $content === '' ){
$content = $horoscope->get_daily_horoscope($config);
$fetched_content = $content;
$update = $wpdb->prepare("INSERT INTO `wp_horoscope` (`last_updated`, `content`, `zodiacal_sign`) values (%s,%s,%s)", $config['date'], $content, $config['sign']);
$wpdb->query($update);}

// step 3
elseif( $fetched_content === '' ) { // if previous function `get_daily_horoscope` does not return any content return the content for previous day
$yesterday_date = date('Y-m-d', strtotime('- 1 day'));
$query = $wpdb->get_results("SELECT * FROM `wp_horoscope` WHERE zodiacal_sign = '".$config['sign']."' AND last_updated = '".$yesterday_date."';", ARRAY_A);
$content = $query['0']['content']; }

// step 4
else{$content = 'The information is not in the DB';}

echo $content;

?>

有人可以帮我解决这个问题吗?

最佳答案

你总是会点击 //step 2 因为内容没有初始化,因此 elseif ( empty($query) || $content == '' ) 将始终返回 true,因为未声明的 $content 将“等于”''。

您可以尝试:$content === ''(注意额外的“=”),除非它实际上是一个空字符串,否则它不会是真的。

关于php - 如何检查内容是否已经在数据库中,如果没有则输入它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14761439/

相关文章:

php - Laravel 5.1 DB builder 和 Eloquent 中的 lockForUpdate 有什么区别?

html - 如何在我的 wordpress 网站上为一行创建倾斜分隔线?

php - 如何在 WooCommerce 数据库中找到客户订购的产品?

php - PDO Insert Into On Duplicate Key 条件无效

php - 如何使用 php 选择 mysqli 进行标签搜索?

php - 如何在 php 中设置第一个月不同初始金额的 paypal 标准定期付款?

mysql - 哪个是快速加载数据 infile 或正常插入?

php - 使用带有照片哈希密码的 Bcrypt 不起作用

php - 检测两个用户是否使用同一页面php

html - 将文本环绕在圆形 div 周围