【问题标题】:Error querying database when inserting into cpanel phpmyadmin插入 cpanel phpmyadmin 时查询数据库时出错
【发布时间】:2016-02-24 11:58:56
【问题描述】:
<?php
    $fname=$_POST['fname'];
    $mname=$_POST['mname'];
    $lname=$_POST['lname'];
    $college_name=$_POST['college_name'];
    $semester=$_POST['semester'];
    $contact=$_POST['contact'];
    $email=$_POST['email'];


    $dbc = mysql_connect('localhost','XXXX',"XXXX",'XXXXX')
            or die('error connecting to MYSQL server');
    echo kkk;
    $query = "INSERT INTO tab_m_registration(fname, mname, lname, college_name, semester, contact, email)".
            "VALUES(`$fname`, `$mname`, `$lname`, `$college_name`, `$semester`, `$contact`, `$email`)";
            echo $query;
            $result=mysql_query($query,$dbc) or die('error querying database');

            echo $result;

            echo 'Thanx for submitting the form. <br/>';
            mysql_close($dbc);

        ?>

其实我不明白问题出在哪里。

$result = mysql_query($query, $dbc)

我认为不工作。

我第一次尝试mysqli_query() 时遇到了问题。然后我尝试了这个

$result = mysql_query($dbc, $query)

我在mysql_query() 中收到错误“参数 1 应该是字符串”。

我交换了值,最后使用了这个mysql_query($query, $dbc)

显示通过echo的值。

但是在数据库表中插入数据仍然存在问题。请帮帮我。

【问题讨论】:

  • 尝试将查询变量用引号而不是反引号括起来
  • 谢谢你的线索。但实际上我不明白你在说什么。你能给我举个例子吗?
  • 我已将反引号替换为单引号,但问题仍然存在。
  • 曾几何时,mysql_ 函数已被弃用...
  • 你需要阅读我的朋友。 w3schools.com/php/php_mysql_insert.asp。通过传递未经清理的变量,您将自己打开注射!

标签: php mysql insertion


【解决方案1】:

您需要进一步调查错误(获取一些错误消息)。您可以使用 try/catch 块来获取更多错误消息(是否已设置所有字段等)。请考虑以下代码,但请记住它仍然对 SQL 注入开放(只是为了获得错误消息):

try {
    $db = mysqli_connect("host", "user", "password", "database");
    if ($db->connect_errno)
        throw new Exception("Connection to the database failed: " . $db->connect_error);

    $sql = "INSERT INTO tab_m_registration (`fname`, `mname`, `lname`, `college_name`, `semester`, `contact`, `email`) ";
    $sql .= "VALUES(`$fname`, `$mname`, `$lname`, `$college_name`, `$semester`, `$contact`, `$email`)";

    if (!$db->query($sql))
        throw new Exception("Error Inserting Data " . $db->error);

    mysqli_close($db);
} catch (Exception $e) {
    echo $e->getMessage();
}

【讨论】:

  • 警告:mysqli_connect(): (42000/1044): 拒绝用户 'isoftech_ppd'@'localhost' 访问 /home/isoftech/public_html/reginsert_interest.php 中的数据库 'isoftech_coaching'在第 53 行

    这里第 53 行的意思是:$db = mysqli_connect("localhost", "isoftech_ppd", "XXXX", "isoftech_coaching");

    致命错误:调用/home/isoftech/public_html/reginsert_interest.php 第 60 行的非对象上的成员函数 query()

    这里第 60 行的意思是:if (!$db->query($sql))

  • 好吧,你去吧,你缺少权限。这需要先解决!
  • 请告诉我怎么做??我已经选择了数据库中的所有权限。
  • @ParthaPratimDeb 这是一个用于编程和编码的网站,而不是一个寻找工作人员的网站 :-)
  • 它解决了。实际上我没有用户的权限。我设置了它。谢谢。
猜你喜欢
  • 2016-06-06
  • 2017-01-05
  • 1970-01-01
  • 2015-10-24
  • 2013-10-02
  • 2014-04-11
  • 1970-01-01
  • 2016-05-23
  • 2012-12-18
相关资源
最近更新 更多