简体   繁体   中英

MySQL/PHP Inserting the same row twice

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

?>

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

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

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. IE $_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();

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 technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM