php - SQL 语句不写入数据库

标签 php mysql

我知道这是一个常见问题,但我以前遇到过这个问题。我已经写了很多写入数据库的 sql 语句,所以我不确定为什么会这样。我的代码说记录已经写入,但记录没有显示在我的 phpmyadmin 数据库中。这是我的代码:

    $hostname = "localhost";
    $dbusername = "username";
    $dbname = "database";
    $dbpassword = "password";
    mysql_connect($hostname, $dbusername, $dbpassword) OR DIE ("Unable to connect to database! Please try again later.");
    mysql_select_db($dbname);


    $sql = "INSERT INTO 'payment_profiles'(id, client_id) VALUES ( '','$profile_id')";

    mysql_query($sql);
    if(! $sql )
    {
      die('Could not enter data: ' . mysql_error());
    }
    else {
    echo ("We inserted the id");
    }

它在运行脚本时告诉我“我们插入了 id”,所以我不确定问题出在哪里。也许有人以前见过这个?注意:profile_id 变量在我的脚本中声明得更高,只是不在这里。

最佳答案

这里有几处错误。

  1. 无数据清理:参见 How can I prevent SQL injection in PHP?
  2. 您正在使用已弃用的 mysql_* 函数,至少使用 MySQLi,或者最好使用 PDO。参见 Why shouldn't I use mysql_* functions in PHP?
  3. 您要引用表名 'payment_profiles' - 如果必须引用,请使用反引号 (`)
  4. 您没有正确测试查询。您正在测试 $sql - 它将始终返回 true 因为 $sql 是一个不为空的字符串。您应该将查询结果分配给 $result,然后检查 $result 是否为真(或处理错误)。

关于php - SQL 语句不写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434272/

相关文章:

php - 通过 PHP 将不规则 XML 导入 MySQL

php - 如何使用另一个数组中的值作为键从数组中选择值的子集?

mysql - 如何在mysql中插入多行

mysql - 如何在 MySQL 表上添加自定义 CHECK 约束?

php - Laravel 5.1 Eloquent 多对多关系

php - AngularJs http 获取到 PHP 脚本返回 php 代码

php - 使用 HTML 标签进行本地化

mysql - 关系数据库设计 : How to design relationships with long paths?

mysql - 服务器上 django 的 syncdb 期间出错

mysql - Forum Schema : should the "Topics" table countain topic_starter_Id? 还是冗余信息?