【问题标题】:query data in a database查询数据库中的数据
【发布时间】:2013-03-03 02:05:54
【问题描述】:

我正在尝试使用 html 表单从我的客户端数据库中检索数据。

谁能告诉我我的代码有什么问题,这个 php 代码从我的数据库中收集数据并返回答案。我对 html/php 非常陌生,任何帮助表示赞赏。

   <?php
      echo $_POST['term']; 
mysql_connect ("localhost", "root","")  or die (mysql_error());
 mysql_select_db ("client");
 $term = $_POST['term'];
 $sql = mysql_query("select * from `client` where first_name like '%".mysql_real_escape_string($term)."%'");
while ($row = mysql_fetch_array($sql))
{
    echo 'ID: '.$row['ID'];
    echo '<br/> First Name: '.$row['first_name'];
    echo '<br/> Last Name: '.$row['last_name'];
    echo '<br/> Phone: '.$row['Phone'];
    echo '<br/><br/>';
    }




?>

    </body>
</html>

注意:未定义索引:第 19 行 C:\xampp\htdocs\getdata.php 中的术语

注意:未定义索引:第 22 行 C:\xampp\htdocs\getdata.php 中的术语

警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 24 行的 C:\xampp\htdocs\getdata.php 中给出

仍然收到上述通知

【问题讨论】:

  • 好吧,首先是 SQL 注入。对于两个,不推荐使用的 mysql_ 函数调用。而你是今天第三个遇到这两个问题的人,只有我见过的人。什么时候停止?

标签: php html


【解决方案1】:

您好,快速浏览一下,我想说,错误出在 MySQL 查询本身。 您在表名周围使用单引号,我认为这是不正确的。尝试不使用任何引号或使用单个“反引号”或您所称的 - 符号:`

【讨论】:

  • 如果您的代码仍然无法正常工作,我建议您在代码开头插入:var_dump($_POST); somwehere,以查看您在 $_POST 字段中实际拥有的内容。您可能使用 $_GET 将数据发送给自己,或者您可能拼错了 POST 变量的名称。由此产生的事实是 $sql 对于结果 SQL 查询为 FALSE 是无效的($_POST['term'] 似乎是未定义的)
【解决方案2】:

除了 ppeterka 的解决方案之外,在你的 while 循环结束之前还有一个缺少引号和分号

echo '<br/><br/>
}

应该阅读

echo '<br/><br/>';
}

【讨论】:

    【解决方案3】:

    这是你的直接问题:

    $sql = mysql_query("select * from 'client' where first_name like '%$term%'");
    

    表名client 的引号不正确。为此使用反引号:

    $sql = mysql_query("select * from `client` where first_name like '%$term%'");
    

    你应该保护自己:

    $sql = mysql_query("select * from `client` where first_name like '%".mysql_real_escape_string($term)."%'");
    

    但是说真的,请保证阅读SQL注入,并且不要再使用mysql_函数了!

    请使用 PDO

    阅读这些:

    【讨论】:

    • 我很欣赏你所说的关于 MySQL 和 pdo 等的内容,但是我们很多人学习这些东西的问题是,如果给你旧的东西来学习,旧的 MySQL phpmyadmin 和旧的代码,我们如何跟上你们。我只需要一个用 Notepad++ 编写的 10 年前书籍中的 html 页面。这会在 xampp 1.8 中的我的 phpmyadmin 数据库中获取数据。工作,它永远不会上线或被使用。
    • @pitbull10 正是这就是为什么我 - 和其他 SOers - 关心......我可能夸大了整个问题,我只是震惊了这么少的人知道这些事情......好吧,文学可能是旧的 - 但我只购买特定书籍并尽可能在线学习其余书籍是有原因的。我建议每个人都这样做,因为有些书一上架就过时了。对不起,如果我听起来很苛刻,我这些天的耐心已经不像以前那样了......
    • 我所说的是 UNI 正在从旧软件和旧书籍中教授旧东西。
    • @pitbull10 我明白这一点,我对此感到难过(几年前我也曾在一所大学教书)......我认为你应该告诉你的导师这些问题,但是可能会导致“不良后果”……有些导师不喜欢学生比他们聪明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多