【问题标题】:MYSQL not working with WhereMYSQL 不适用于 Where
【发布时间】:2014-10-01 08:46:15
【问题描述】:

我正在尝试从表格中获取数据以表格方式显示。

$myid = 'First_User';
$checkQuery = "SELECT * FROM MyDatabase WHERE id='" . $myid . "';";
echo $checkQuery; // it returns SELECT * FROM MyDatabase WHERE id='First_User';. I run in mySQL console , and it returns the record.
$result = mysql_query($checkQuery);     
$row = mysql_fetch_array($result);

上面似乎无法获取任何东西。但是说"Resource #3"。没有看到数据。

$myid = 'First_User';
$checkQuery = "SELECT * FROM MyDatabase";

$result = mysql_query($checkQuery);
$row = mysql_fetch_array($result);

这可以从 MyDatabase 返回所有数据。我的数据库中确实有 First_User。

【问题讨论】:

  • 请不要使用旧的、已弃用的 MySQL 扩展来学习数据库访问;学习使用 MySQLi 或 PDO 与准备好的语句/绑定变量
  • id 是 'First_User' 还是在另一列中?
  • 你在显示什么来获得Resource #3,听起来你在显示$result;您需要显示$row 数组
  • 能否请您发布 print_r($row) 的输出?
  • 是的。 id 列有 First_User。想知道 Resource#3 是什么。

标签: php mysql where-clause


【解决方案1】:

您好 MySQL 是面向表的。

Select <table felds> , < table felds> From <table> Where ....

【讨论】:

  • 看起来他们的表被称为“MyDatabase” - SELECT * 在省略 WHERE 子句时有效。
【解决方案2】:

问题是您尝试查询的方式,基本上您必须这样做:

SELECT * FROM your table_name WHERE field_name='Field_value';

数据库通常定义在你用来连接数据库的驱动程序上,在这种情况下不推荐使用

mysql-connect 但正如已经提到的,你应该使用更新更安全的 PDO :)

【讨论】:

    【解决方案3】:

    试试这个..

    $checkQuery = "SELECT * FROM MyDatabase WHERE id='$myid'";
    

    【讨论】:

    • 我尝试 $checkQuery = "SELECT * FROM MyDatabase WHERE id='$myid'";。同样没有数据获取
    • 在你的前端网页上使用一个文本框,从用户那里获取数据并在网页中显示如下:
    • if(isset($_REQUEST['您的按钮名称'])){$text = $_REQUEST("您的文本框名称"); $checkQuery = "SELECT * FROM MyDatabase WHERE id='$myid'"; $query=mysql_query($checkQuery);} 然后回显查询..
    【解决方案4】:

    试试这个 -

    $myid = 'First_User';
    $checkQuery = "SELECT * FROM MyDatabase WHERE id='$myid'";
    $result = mysql_query($checkQuery);
    $row = mysql_fetch_array($result);
    while($row = mysql_fetch_array($result)) {
        echo '<td><input type="text" name="ID" value='.$row[0].'></td>';
    }
    

    注意:避免使用mysql_* 函数。改用mysqli_* 函数。

    【讨论】:

      【解决方案5】:

      首先,不要使用mysql_connect,使用MySQLi或PDO

      我更喜欢 PDO。

      如何连接到 PDO:

      $db_connection = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME . ';charset=utf8', DB_USER, DB_PASS);
      

      现在您要编写查询并获取

      $query = $db_connection->prepare("SELECT * FROM `MyDatabase` WHERE `id` = :id");
      $query->execute(array(":id" => $myid));
      $result = $query->fetchAll();
      
      foreach($result as $user) {
          echo $user['id'];
          echo "<tr>";
          echo "<td><input type=\"text\" name=\"ID\" value=\"" echo $row['id'] "\" /></td>";
          echo "</tr>"
      }
      

      希望我没有遗漏任何内容,但请阅读 PDO 文档:http://php.net/manual/en/book.pdo.php(或 mysqli:http://php.net/manual/en/book.mysqli.php

      如果您在查询中的某处使用 post 数据,请参阅其他关于如何防止 mysql 注入的帖子:How can I prevent SQL injection in PHP?

      【讨论】:

        【解决方案6】:

        使用它。并附加添加LIMIT,因为您的查询将只返回结果。这是额外的潜力。

        $id = $_SESSION['user_id']; // or something else.  
        
        $checkQuery = "SELECT * FROM MyDatabase WHERE id='$id' LIMIT 1";
        
        $results = mysqli_query($checkQuery);
        
        if ($result) $user=mysql_fetch_assoc($result);
        
        // use now.
        
        echo $user['user_name'];
        echo $user['id'];
        

        【讨论】:

          猜你喜欢
          • 2021-08-16
          • 1970-01-01
          • 2010-10-03
          • 2017-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多