php和mysql连接似乎正常,但表没有更新

t2a7ltrp  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(437)

我使用下面的代码插入到mysql表中。我做了一些手动测试,以确定所有的变量都设置正确。代码正在执行success语句,当我检查heroku日志时,它给出了状态200。然而,当我检查表格时,没有插入任何内容。任何人都可以确定一个问题的代码,或指示我在哪里我可以找到一个错误消息,以帮助我解决它。谢谢。

  1. else {
  2. $url = parse_url(getenv('CLEARDB_DATABASE_URL'));
  3. $server = $url['host'];
  4. $username = $url['user'];
  5. $password = $url['pass'];
  6. $db = substr($url['path'], 1);
  7. $conn = mysqli_connect($server, $username, $password, $db);
  8. $sql = sprintf("INSERT INTO messages (name, email, message) VALUES ('%s', '%s', '%s')",
  9. mysqli_real_escape_string($conn, $name),
  10. mysqli_real_escape_string($conn, $email),
  11. mysqli_real_escape_string($conn, $message));
  12. $result = mysqli_real_escape_string($conn, $sql);
  13. if (!$result) {
  14. echo 'an error occurred.';
  15. }
  16. else {
  17. $success = 'Thank you. Your submission was saved.';
  18. }
  19. }
vmjh9lq9

vmjh9lq91#

您的查询从未执行过。您可能想使用 mysqli_query(...) 执行sql语句。
所以这一行:

  1. $result = mysqli_real_escape_string($conn, $sql);

应该是:

  1. $result = mysqli_query($conn, $sql);

然后它应该工作并更新您的表。为了确保您的查询是安全的,请尝试使用准备好的语句。使用 mysqli_real_escape_string() 不足以阻止sql注入。

相关问题