1

I understand this is a frequently asked question, but I'm having trouble with this before. I've written quite a few sql statements that write to database, so I am not sure why this is happening. My code says the record has been written, but the record doesn't show up in my database in phpmyadmin. Here is my code:

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

It tells me "We inserted the id" when the script is ran, so I am not sure what the problem is. Maybe someone has seen this before? Note: the profile_id variable is declared higher up in my script, its just not on here.

4

4 回答 4

12

这里有几个问题。

  1. 没有数据清理:请参阅如何防止 PHP 中的 SQL 注入?
  2. 您正在使用已弃用的mysql_*函数,至少使用 MySQLi,或者最好使用 PDO。请参阅为什么我不应该在 PHP 中使用 mysql_* 函数?
  3. 您引用了您的表名'payment_profiles'- 如果您必须引用,请使用反引号 (`)
  4. 您没有正确测试查询。您正在测试$sql- 这将始终返回 true,因为$sql它是一个不为空的字符串。您应该将查询结果分配给$result,然后检查是否$result为真(或处理错误)。
于 2013-07-02T19:36:26.650 回答
0

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

尝试:

$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");
}
于 2013-07-02T19:39:23.080 回答
0

您正在检查 !$sql .. $sql 包含什么 .. 它的查询字符串没有其他内容,这就是为什么 else 部分在初始化时在此处执行。将您的代码转换为

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

注意:使用 mysqli_* 函数。mysql_* 已弃用

编辑 1 的语法是$result=mysqli_query($link,$sql);. 注意:使用此功能后,如果您收到调用未定义函数的错误。那么您将需要编辑您的 php.ini 配置文件并删除;从 ;extension=php_mysqli.dll 并将您的 extension_dir 设置为您的 php 文件夹的 ext 子文件夹。好吧。但首先尝试像我说的那样减少代码

于 2013-07-02T19:39:53.493 回答
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");
}
于 2013-07-02T19:37:43.553 回答