【问题标题】:php not inserting data into mysql databasephp没有将数据插入mysql数据库
【发布时间】:2019-11-04 22:55:45
【问题描述】:

我有以下代码:

<?php
  include("phpconnect.php");

  $name = $_GET["name"];
  $date = $_GET["date"];
  echo $name;
  echo $date;

  $sql = "INSERT INTO main (name, visits, visitDate, lastVisit) 
  VALUES ('$name', '1', '$date', '$date')";

?>

当代码运行时,我从 phpconnect.php 收到一条消息,说它已成功连接。但是,当我检查数据库时,其中没有任何信息。如果有人知道为什么会发生这种情况或我该如何解决,请告诉我。谢谢!

【问题讨论】:

  • 也许你需要在最后发出commit
  • 如果未启动事务,则可能不会。亨利,我们几乎肯定需要phpconnect.php 中的代码(减去凭据),以及您期望在数据库中看到的内容以及您通过代码在其中实际看到的内容,以及您正在使用的查询检查数据库中的内容。
  • @BarbarosÖzhan PHP 不需要,您正在考虑使用 Python。
  • 你从来没有真正执行过查询,你只是声明了一个包含它的字符串。查找基本的 mysqli 或 PDO 教程和/或阅读包含数十个示例的官方文档。并确保您在此过程中了解准备好的语句和参数化查询,因为此代码目前容易受到 SQL 注入攻击(如果查询曾经被执行!)。
  • 我没有看到将数据插入数据库的语句。您希望数据如何出现在数据库中?

标签: php mysql sql-insert


【解决方案1】:

您的代码创建了一个 SQL 命令,但没有将其发送到数据库执行。具体应该怎么做取决于phpconnect.php 中发生的事情。假设后者包含类似......

 <?php
 ...
 $dbh=mysqli_connect($host, $user, $pass, $database);
 ...

那么你的脚本应该以...结尾

 $result=mysqli_query($dbh, $sql); // this sends your command to the DBMS
 if (false===$result) {  // because you should always check the outcome
    print mysqli_error($dbh);
 } else {
    print "added " . mysqli_num_rows($result) . " rows";
 }
 mysqli_close($dbh); // not required but good practice

 ?>

在将您的代码放到互联网上之前,您需要花一些时间了解SQL Injection

【讨论】:

  • 我在脚本末尾添加了您提供的代码,它输出added rows,但没有任何内容添加到数据库中。知道为什么会发生这种情况吗?
  • 哎呀 - 应该是 mysqli_affected_rows($dbh)。至于没有添加到数据库中 - 答案在您的日志文件/数据库中。
  • 在代码中使用print(mysqli_error($conn)); 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?
  • 不检测你的代码是一个非常糟糕的主意,如果我们要批评这里提供的代码,我们会忙很长时间。
【解决方案2】:

你的代码没有做任何事情的原因是你还没有真正执行它。 现在假设“phpconnect”文件为您建立了数据库连接。如果您使用 MYsqli,建议您查看 this page,查看 this one

如果您还有任何问题,我很乐意提供帮助。

【讨论】:

  • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2015-05-27
相关资源
最近更新 更多