SQL语句不写入数据库

时间:2013-07-02 19:33:30

标签: 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变量在我的脚本中声明更高,它不在这里。

4 个答案:

答案 0 :(得分:12)

这里有些不对劲。

  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是否为真(或处理错误)。

答案 1 :(得分:0)

你应该改变“If”阻止条件,如果你想使用弃用的mysql_query,你必须测试mysql_query是否正常,而不是$ sql变量是否已被“定义”

$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')";

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

答案 2 :(得分:0)

$ sql是一个始终为true的字符串。

尝试:

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

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

答案 3 :(得分:0)

你正在检查!$ sql .. $ sql包含..它的查询字符串没有别的,这就是为什么其他部分在这里执行,因为它已初始化。将你的代码转换为

$result= mysql_query($sql);
if(! $result )
{

注意:使用mysqli_ * functions.mysql_ *已弃用

编辑1 语法为$result=mysqli_query($link,$sql);注意:如果您收到错误调用未定义函数 。然后你将需要编辑你的php.ini配置文件并删除; from; extension = php_mysqli.dll并将你的extension_dir设置为你的php folder.okay的ext子文件夹。但是我首先尝试使用runt代码