【问题标题】:PHP MySQL INSERT not inserting nor any error is displayedPHP MySQL INSERT 不插入也不显示任何错误
【发布时间】:2012-12-22 23:09:53
【问题描述】:

我得到了这段代码,所以通过 PHP 将值插入到 MySQL 中的表中。我已经尝试了所有可能的插入语法,它不插入数据......这是我使用的代码。

$param = "xyzxyz";
$param1 = "sdfdfg";
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')";
$result = $mysql->query($sql);
if($result)
   echo "successful";
else
   echo mysql->error;
if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;

我什至尝试了以下 sql 语法

"INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param1','$param1')";

"INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('$param1','$param1')";

我尝试了其他几个,它们都没有在表中插入任何东西。这是 MySQL 中的表;

trail

User_Name varchar(35)
Quiz_ID varchar(35)

它不插入任何东西,也不显示任何错误。而且我有正确的数据库连接,因为我可以从表中选择。只是插入很棘手。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 可能没有对表的插入权限?
  • 你用的是mysqli还是mysql?
  • 在代码中它表示在表格为 trailanswer 时跟踪
  • 尝试查找错误信息。也许在日志中或使用 php 函数 mysql_error()
  • 一个想法:手动插入一些数据并尝试在代码中选择它怎么样?那样有用吗?即,您是否甚至连接到数据库和表。看起来,这绝对是一个具有挑战性的问题。感谢您清理示例代码,这很有帮助。

标签: php phpmyadmin mysqli


【解决方案1】:

如果有人遇到类似问题,请注意:

我有一个类似的问题 --- 插入查询在 PHPMyAdmin 上工作,但在 PHP 上不工作,也没有发出任何错误(结果一直是 true)。

原因是我正在开始一个事务,但忘记提交它......

$mysqli->autocommit(FALSE);

$mysqli->query( "START TRANSACTION" );

永远不要忘记这一点:

$mysqli->commit();

这是一个愚蠢的错误,我知道,但我太专注于查询的谜团,以至于忘记了上面几行的事务语句。

【讨论】:

    【解决方案2】:

    先检查mysqli::$errno。

    if(mysql->errno==0)
       echo "successful"
    else
       echo mysql->error;
    

    【讨论】:

    • 是的,我正在使用 MySQLi,而 mysql->error() 没有显示错误……这令人沮丧……不知道我哪里出错了。
    • 那你能用if(mysql->errno==0)吗?
    • 是的,我确实使用了 if(mysql->errno==0).. 仍然没有任何反应...没有错误,也没有插入。
    • 好的,但随后更新代码以显示您已尝试过。这样读者就不会感到疑惑了。
    • 打印successful 吗?
    【解决方案3】:

    我所做的是,如果您没有安装调试器,只需通过电子邮件将查询发送给您。通过这种方式,您可以看到最终查询是什么,如果您可以访问 phpMyAdmin 之类的内容,请尝试手动运行查询并查看会发生什么。另一件事,请确保您正确搜索插入的记录,如果您因为记录数量而使用搜索查询,请确保 WHERE 条件是正确的,这已经烧了我几次。

    编辑 名称周围可能缺少符号。我必须运行我所有的 MySQL 查询,比如

    `nameOfThing`
    

    而不仅仅是 nameOfThing

    $param = "xyzxyz";
    $param1 = "sdfdfg";
    $sql = "INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('".$param."','".$param1."')";
    $result = $mysql->query($sql);
    if($result)
       echo "successful";
    else
       echo mysql->error;
    if(mysql->errno==0)
       echo "successful"
    else
       echo mysql->error;
    

    【讨论】:

    • 是的,我也在 PHPMyAdmin 上运行了代码,它从那里工作得非常好,我确实调试了它工作正常的查询。
    • 好的,$mysql->query($sql) 是任何自定义实现还是 ORM 的一部分?
    【解决方案4】:

    仅供参考,您插入 $param1 两次。

    你也没有';' echo "成功"后。

    我建议你清理代码示例,然后再试一次,然后告诉我们。

    要清理的东西

    1. $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param','$param1')"; 您不需要在字符串连接中连接变量,您可以进行插值。但是,您实际上应该将 PDO 与准备好的语句一起使用,以避免 SQL 注入的可能性。
    2. 添加缺少的;
    3. if(mysql->errno==0) 的第一个检查放入(除非您要切换到 PDO 来获取这些内容)。
    4. mysql->error 修复为mysql->error()
    5. 也许来自 cmets 的其他一些东西。

    【讨论】:

    • 是的,这也是错字...但即使我输入 $param 并且 $param1 也没有插入任何内容。而且我不认为插入相同的值不应该是一个问题。谢谢
    • 我更新了我的答案以总结一些需要修复的问题。不确定这些是否能解决你的问题,但在你解决它们之前,你不会在找到真正的问题方面取得进展,尤其是这里的人试图根据未更正的代码提供帮助。
    • 您可能会想:“为什么要修复这些,如果它们不是 修复”?但在你这样做之前,你就像一个人在城里问路,脸上沾着一堆番茄酱。人们应该在城里给你指路,但他们完全被番茄酱分散了注意力。如果你清理代码(擦掉番茄酱),人们可以专注于真正的问题。
    • 是的,我是一个经验丰富的 MYSQL 程序员,所以这些语法都是固定的除了这个带有插入的戏剧之外,所有其他 mysql 命令都可以工作,这是我第一次遇到这种奇怪的事情
    【解决方案5】:

    好吧,如果以下代码没有产生错误并显示 1 个受影响的行,那么您很可能是在错误的数据库中查找结果。

    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    
    $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('testing','1')";
    $mysql->query($sql);
    var_dump($mysql->error,$mysql->affected_rows);
    

    【讨论】:

      【解决方案6】:

      我的表是 InnoDB 表,当我将表更改为 MyISAM 时,插入工作正常。好吧,我以前从未遇到过这个问题。好吧,这暂时奏效了。

      如果我想使用 InnoDB 引擎进行交易?我怎样才能让 php 能够在 InnoDB 表中插入值?有人有什么建议吗?我正在使用 WAMP 服务器,MySQL 是 5.5.24 版。我确实更改了 my.ini 中的 InnoDB conf,但这似乎也不起作用?

      【讨论】:

      • 你能从 PHP 中对 Innodb 表执行 SELECTS 吗?
      【解决方案7】:

      试试这个

      $param = "xyzxyz"; 
      $param1 = "sdfdfg"; 
      $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; $result = $mysql_query($sql); if($result){ echo "successful";} else { echo " not successful;}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-11
        • 2013-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-19
        相关资源
        最近更新 更多