MySQL/PHP Inserting the same row twice

2019-07-04 03:44发布

Please help. I consider myself to have a reasonable understanding of MySql & PHP, but for the life of me I can't figure out why this code is inserting the same row twice. I've literally stripped it back to the following code:

<?php

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

?>

The MySQL table it's being inserted into has 10 columns in it, but even with all of them mentioned in the query, it still inserts 'test@test.com' on two rows, with separate primary keys.

I've created a new Wordpress page to run this on as all other pages seem to be functioning fine without the duplication.

I've done some Googling which hasn't found much of any help - Is there anyway I can check where the second query is coming from? I've starred at the above code for about an hour now and cannot see any issues with it.

Any ideas/help MUCH appreciated!

Thanks

----- EDIT -----

So here's the result from the debug traceback, the code that's being run is literally the 2 lines above - I've blanked the domain for security. Can anyone see any interference? I'm no PHP expert and with all the extra Wordpress stuff thrown in, I'm not sure what's what! Thanks guys

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

1 WP_exec_PHP->exec(

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

mysql_query($myQuery);

debug_print_backtrace()

?>

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

2 WP_exec_PHP->_exec_post(

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

mysql_query($myQuery);

debug_print_backtrace()

?>

)

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

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

mysql_query($myQuery);

debug_print_backtrace()

?>

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

4 apply_filters(the_content,

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

mysql_query($myQuery);

debug_print_backtrace()

?>

4条回答
三岁会撩人
2楼-- · 2019-07-04 04:19

I had the same problem, and it was chrome fault! I clear the sessions, cookies, cache, all data application and it works.

查看更多
\"骚年 ilove
3楼-- · 2019-07-04 04:20

Try a PHP Data Object(PDO). Using the mysql_* functions are obsolete.

These variable initializations should be defined in an ini file that you use php_parse_ini() to get the data from.

<?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();

Also, if you want to know if this code is getting run more than once. Try setting a $_SESSION variable. I.E. $_SESSION['count'] = 0; Then right before execute() put $_SESSION['count']++; Finally, dump the value of $_SESSION at the end of your code to determine what the value is.

var_dump($_SESSION);die();
查看更多
劫难
4楼-- · 2019-07-04 04:21

Have you tried another browser? I had plenty of bad experiences because some extensions that I had in my browser were requesting the page one more time.

Even if that's not your problem, I think you should check for external factors, as this code cannot insert two rows. Unless, of course, it's being called twice.

查看更多
The star\"
5楼-- · 2019-07-04 04:24

Use the PHP function debug_print_backtrace() to find out where your code is being called from.

查看更多
登录 后发表回答