【问题标题】:SQL to search and return results that are formatted in if and else statements [duplicate]SQL搜索并返回以if和else语句格式化的结果[重复]
【发布时间】:2017-04-02 13:08:58
【问题描述】:

我正在尝试从数据库中获取结果并显示“您的设备仍在保修期内”。或“此设备的保修期已过。”取决于保修到期日期是否早于今天的日期。

我正在使用自定义 Wordpress 页面模板连接到远程数据库。这是我到目前为止所拥有的。我已连接到数据库并可以返回结果。我只是在努力创建一个以有用的方式回显结果的搜索表单。

 <?php $con = mysqli_connect("localhost","my_user","my_password","my_db");


 // check connection
 if ($con->connect_error) {
 die("Connection failed: " . $con->connect_error);
 }
 echo "Connected successfully";
 ?>    
 <form action="" method="post">  
   Search: <input type="text" name="term" /><br />  
   <input type="submit" value="Submit" />  
</form>  
<?php
   if (!empty($_REQUEST['term'])) {
   $term = mysql_real_escape_string($_REQUEST['term']);     

$sql = "SELECT * FROM warranty WHERE serial LIKE '%".$term."%'"; 
$r_query = mysql_query($sql); 

我在这里要做的是说如果输入的序列号“warexp”的日期值早于今天回显“此产品的保修期已过”。如果它返回一个尚未通过的日期,则作为我的 ELSE 声明“您的设备仍在保修期内”。我真的很困惑这部分以及如何让它在 Wordpress 中的自定义页面模板上工作,或者这甚至很重要。

while ($row = mysql_fetch_array($r_query)){  
?????????????????????????
?>

提前感谢您提供任何见解。我希望我对问题的描述很清楚。

【问题讨论】:

  • 请停止使用mysql_* 函数。它们在 PHP 5.5 中被弃用,它太旧了,甚至不再接收安全更新,并在 PHP 7 中完全删除。相反,使用 PDO 或mysqli_*。详情请见stackoverflow.com/q/12859942/354577
  • mysql_* 功能的保修期也已过期...而且不能与 mysqli 混合使用。
  • 我会调查一下,但这对我正在寻找解决方案的问题并没有真正的帮助。但是,让我重新键入连接,以便符合标准。
  • @cjvalotta,jeroen 的部分评论确实对你有帮助。你不能使用mysqli_connect()mysql_query()/_fetch_array()/_real_escape_string()等。
  • @cjvalotta,具体是哪一部分给您带来了麻烦?与今天的日期比较?

标签: php mysql wordpress search


【解决方案1】:

试试这个:

 <?php $con = mysqli_connect("localhost","my_user","my_password","my_db");
  // check connection
 if ($con->connect_error) {
  die("Connection failed: " . $con->connect_error);
 }
 echo "Connected successfully";
 ?>    
 <form action="" method="post">  
   Search: <input type="text" name="term" /><br />  
   <input type="submit" value="Submit" />  
 </form>  
 <?php
 if (!empty($_REQUEST['term'])) {
   $term = "%{$_REQUEST['term']}%";
   $sql = "SELECT * FROM warranty WHERE serial LIKE ?"; 
   $prepare = $con->prepare($sql);
   $prepare->bind_param('s',$term);
   $prepare->execute();
   $r_query = $prepare->get_result();
   while($row = $r_query->fetch_assoc()){
     if((time() - (60 * 60 * 24)) <= strtotime($row['date_value']))
     {
       echo 'Your device is still under warranty.' . '<br>';
     }
     else
     {
       echo 'This product's warranty is expired.' . '<br>';
     }
   }
 }

阅读更多php oficial documentation

【讨论】:

  • get_result() 并非所有人都可以使用,并且将取决于服务器配置,因为手册指出:“MySQL Native Driver Only Available only with mysqlnd另外, “试试这个” 的答案通常不受欢迎;只是想你想知道 ;-) Stack 是关于了解事物“如何”工作而不是“希望”它工作。
  • grazie very mooch @Drew
猜你喜欢
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2013-09-09
  • 2018-09-21
  • 2015-10-11
  • 1970-01-01
相关资源
最近更新 更多