MySQL / PHP两次插入同一行

时间:2014-08-12 19:39:51

标签: php mysql wordpress

请帮忙。我认为自己对MySql&有一个合理的理解。 PHP,但对于我的生活,我无法弄清楚为什么这段代码两次插入同一行。我真的把它剥离回以下代码:

<?php

$query = "INSERT INTO `cs_social_alerts` (email) VALUES ('test@test.com')";
mysql_query($query);

?>

它插入的MySQL表中有10列,但即使查询中提到了所有这些列,它仍会在两行上插入“test@test.com”,并带有单独的主键。

我已经创建了一个新的Wordpress页面来运行它,因为所有其他页面似乎运行正常,没有重复。

我做了一些谷歌搜索没有找到任何帮助 - 无论如何我可以检查第二个查询来自哪里?我已经在上面的代码中出演了大约一个小时,现在看不出任何问题。

任何想法/帮助很多人赞赏!

由于

-----编辑-----

所以这是调试回溯的结果,正在运行的代码实际上是上面的两行 - 我已经为了安全性而清空了域。谁能看到任何干扰?我不是PHP专家,并且所有额外的Wordpress内容都被抛入,我不确定是什么!谢谢你们

0 eval()在[/var/sites/c/****.com/public_html/wp-content/plugins/wp-exec-php/wp-exec-php.php:652]

1 WP_exec_PHP-&gt; exec(

$ myQuery =“INSERT INTO cs_social_alerts(电子邮件)VALUES('test@test.com')”;

的mysql_query($更改为MyQuery);

debug_print_backtrace()

&GT;

)[/ var / sites / c / ****。com / public_html / wp-content / plugins / wp-exec-php / wp-exec-php.php:692]

2 WP_exec_PHP-&gt; _exec_post(

$ myQuery =“INSERT INTO cs_social_alerts(电子邮件)VALUES('test@test.com')”;

的mysql_query($更改为MyQuery);

debug_print_backtrace()

&GT;

3 call_user_func_array(Array([0] =&gt; WP_exec_PHP Object([] =&gt; Array(),[] =&gt; /var/sites/c/*.com/public_html /wp-content/plugins/wp-exec-php/wp-exec-php.php),[1] =&gt; _exec_post),数组([0] =&gt;

$ myQuery =“INSERT INTO cs_social_alerts(电子邮件)VALUES('test@test.com')”;

的mysql_query($更改为MyQuery);

debug_print_backtrace()

&GT;

))调用[/ var / sites / c / * .com / public_html / wp-includes / plugin.php:192]

4 apply_filters(the_content,

$ myQuery =“INSERT INTO cs_social_alerts(电子邮件)VALUES('test@test.com')”;

的mysql_query($更改为MyQuery);

debug_print_backtrace()

&GT;

3 个答案:

答案 0 :(得分:0)

使用PHP函数debug_print_backtrace()找出调用代码的位置。

答案 1 :(得分:0)

尝试PHP数据对象(PDO)。使用mysql_ *函数已经过时了。

这些变量初始化应该在您使用php_parse_ini()来获取数据的ini文件中定义。

<?php        
    $host = "host=localhost";
    $name = ";dbname=name_of_db";
    $user = "user";
    $pass = "pass";

    $conn = new PDO("mysqli:".$host.$name,$user,$pass);
    $stmt = $conn->prepare("INSERT INTO `cs_social_alerts` (email) VALUES (:email)");
    $stmt->bindParam(':email', $email);
    $stmt->execute();

此外,如果您想知道此代码是否多次运行。尝试设置$ _SESSION变量。 I.E. $ _SESSION [&#39; count&#39;] = 0;然后就在execute()之前放入$ _SESSION [&#39; count&#39;] ++;最后,在代码末尾转储$ _SESSION的值以确定值是什么。

var_dump($_SESSION);die();

答案 2 :(得分:0)

您是否尝试过其他浏览器?我有很多不好的经历,因为我在浏览器中的一些扩展程序再次请求页面。

即使这不是您的问题,我认为您应该检查外部因素,因为此代码不能插入两行。当然,除非它被召唤两次。