【问题标题】:Get info from URL and mysql database in PHP从 PHP 中的 URL 和 mysql 数据库获取信息
【发布时间】:2012-05-10 14:10:15
【问题描述】:

当我尝试在之前的问题中发布时,我想知道如何从 php 中的 URL 和 mySQL 数据库获取数据,然后比较结果,如果它们相等,则运行一个事件。到目前为止,我有这段代码,但只要 URL 中有一个 id,它似乎无论如何都可以工作。它从不根据 mysql 数据库中的 id 检查它。有什么想法吗?

代码如下:

    <?php

$random = uniqid();

if ($id = $_GET['id']) {

$dbhandle = mysql_connect('host', 'user', 'password')
 or die("Unable to connect to MySQL");
$selected = mysql_select_db('a6675286_main',$dbhandle)
or die("Could not select database");

$sql = "SELECT completed FROM authentication WHERE username='admin'"; 
$id2 = mysql_query($sql);

}

if ($id = $id2) {
 mysql_query("UPDATE authentication SET completed = $random WHERE username = 'admin'");
 include 'sendmail.php';
echo "You win";
}
else {
header('Location: http://www.websites.com/');
}

?>

【问题讨论】:

  • $set_me = 'I set You'; $equal == ''; $identical === '';
  • 请停止使用古老的mysql_* 函数编写新代码。它们不再维护,社区已经开始 deprecation process 。相反,您应该了解prepared statements 并使用PDOMySQLi。如果您无法决定,this article 将帮助您选择。如果你想学习,here is a good PDO-related tutorial.
  • 我不知道有更新的函数,我总是使用你的“古老”mysql 函数。但真的感谢您的更新,因为该代码必须至少有 70 年的历史。

标签: php mysql compare


【解决方案1】:
if ($id = $id2)

错了!

你需要

if ($id == $id2)

还有

($id == $_GET['id'])

【讨论】:

    【解决方案2】:

    $id2 不是 id,因为mysql_query 返回一个结果集。要在 PHP 中处理查询结果集,请查看结果函数,例如 mysql_fetch_assoc

    【讨论】:

      【解决方案3】:

      您不是在比较 if 语句中的值,而是在分配它们 试试

      如果($id == $_GET['id'])

      if ($id == $id2)
      

      另外,您为 $id2 分配了不正确的值,您正在寻找的是

      $result = mysql_query($query);
      $row = mysql_fetch_array($result);
      $id2 = $row[0];
      

      【讨论】:

      【解决方案4】:

      请更正:

      1. $id2 = mysql_query($sql);你需要处理$id2数组的结果来得到需要的变量。

      2. if ($id = $id2) { ...和if ($id = $_GET['id']) {使用==

      【讨论】:

      【解决方案5】:

      $id 不是数字。这是一个mysql资源。

          <?php
      
      $random = uniqid();
      
      if ($id == $_GET['id']) { //<-------Check this double '=='
      
      $dbhandle = mysql_connect('host', 'user', 'password')
       or die("Unable to connect to MySQL");
      $selected = mysql_select_db('a6675286_main',$dbhandle)
      or die("Could not select database");
      
      $sql = "SELECT completed FROM authentication WHERE username='admin'"; 
      $result = mysql_query($sql) or die(mysql_error()); //<------------ it is a mysql resource
      $row = mysql_fetch_assos($result);
      $id2 = $row['completed']; //<----- Now the value comes
      
      }
      
      if ($id == $id2) { //<-------Check this double '=='
       mysql_query("UPDATE authentication SET completed = $random WHERE username = 'admin'");
       include 'sendmail.php';
      echo "You win";
      }
      else {
      header('Location: http://www.websites.com/');
      }
      
      ?>
      
      • '=' 正在分配运算符。这意味着左操作数被设置为 右边表达式的值。

      • '==' 和 '===' 是比较运算符。

        • x == y(相等)

        • x===y(相同)它也检查类型。

      【讨论】:

      猜你喜欢
      • 2012-10-31
      • 2016-01-23
      • 1970-01-01
      • 2023-03-04
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2012-10-31
      相关资源
      最近更新 更多