【问题标题】:MySQL INSERT query works in Phpmyadmin but not in PHPMySQL INSERT 查询在 Phpmyadmin 中有效,但在 PHP 中无效
【发布时间】:2013-08-17 15:56:44
【问题描述】:

很奇怪。我看不出这里出了什么问题。与 MySQL 数据库的连接已建立,但不会从 PHP 插入。如果我在 Phpmyadmin 中运行查询就可以了。

$rawquery = "
    INSERT INTO $log_table_name
        (ref, timestamp, txn_id, email, item_name, item_number, custom, mc_gross, mc_currency, paypal_message)
    VALUES
        (NULL, CURRENT_TIMESTAMP, '$txn_id', '$payer_email', '$item_name', '$item_number', '$custom', '$payment_amount', '$payment_currency', 'INVALID');
";
echo $rawquery;
$query = mysql_query($link, $rawquery) or die('Could not access table');

生产:

INSERT INTO wp_ipn_log
    (ref, timestamp, txn_id, email, item_name, item_number, custom, mc_gross, mc_currency, paypal_message)
VALUES
    (NULL, CURRENT_TIMESTAMP, '', '', '', '', '', '', '', 'INVALID');Could not access table

我期待 INVALID 消息,我只想将它插入数据库中。

是查询的格式有问题,还是数据库有问题,还是其他问题?

附加信息(根据 vinodadhikary 的要求):

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db(DB_NAME, $link) or die ("Could not open db ".mysql_error());

这工作正常。

【问题讨论】:

  • 检查用户名和密码是否正确,是否有写入表的权限
  • 警告:mysql 扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应使用MySQLiPDO_MySQL 扩展名。请不要使用mysql 开发新代码。
  • 尝试使用mysqli istead。
  • 最初是mysqli,但它不起作用,所以我尝试了mysql。结果相同。
  • mysql_error()/mysqli_error($link) 添加到您的die()。此外,mysql_querymysql_query(query, link),其中 mysqli_querymysql_query(link, query)。所以应该是$query = mysql_query($rawquery,$link) or die(mysql_error()); 或者使用mysqli -> $query = mysqli_query($link, $rawquery) or die(mysqli_error($link));

标签: php mysql phpmyadmin


【解决方案1】:

在尝试调试代码时,在 die() 中使用 mysql_error()/mysqli_error($link) 而不是通用字符串 - die('Could not access table') 会很有帮助。

另外,mysql/mysqli中查询/链接的顺序也不一样

mysql_querymysql_query(query,link),所以你的代码应该是

$query = mysql_query($rawquery,$link) or die(mysql_error()); 

mysqli_querymysqli_query(link, query),所以你的代码应该是

$query = mysqli_query($link, $rawquery) or die(mysqli_error($link));

【讨论】:

    【解决方案2】:

    需要检查几件事,

    1 - 引用字段名称是否允许为 NULL ?
    2-paypal_message 检查这个 varchar 还是文本,检查长度也在数据库中吗?
    3 - 您可以尝试从每个值中删除 '' 吗?
    4 - 最后检查空是否允许?

    您可以尝试使用一些示例值而不是空值。检查该查询是否有效,以便您可以找到解决方案。

    希望这些东西对你有帮助

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多