PHP MySQL запрос выполняется дважды - PullRequest
0 голосов
/ 26 января 2012

У меня есть PHP-скрипт:

$q = $dbc -> prepare("
    UPDATE accounts 
    SET motivation = motivation-10 
    WHERE id = ?
");

$q -> execute(array($user['id']));

Но он вычитает 20 вместо десяти.Когда я запускаю запрос в MySQL, он только вычитает десять.Почему?

Ответы [ 3 ]

0 голосов
/ 26 января 2012

Ваше подготовленное заявление выглядит хорошо. Следует вычесть 10 из текущего значения в столбце мотивации.

Если вычитается 20, вы, скорее всего, звоните дважды.

Убедитесь, что вы звоните execute() только один раз, и если вы звоните с веб-страницы, убедитесь, что вы не нажимаете его дважды.

0 голосов
/ 12 февраля 2014

Проблема возникает, когда вы пишете PHP-код и HTML-код на одной и той же странице. Если вы нажимаете кнопку «Отправить» и вставляете в первый раз, то страница снова обновляется… не так ли? Затем снова выполните код. Исправление: вы хотите проверить условие перед выполнением оператора, форма которого дает нам данные.

if($_POST['txtlocation']!='')
{
$sql = "INSERT INTO location(description) VALUES (:location)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':location', $_POST['txtlocation'], PDO::PARAM_STR); 
$stmt->execute();
}
0 голосов
/ 26 января 2012

Ваш метод $ q -> execute делает что-то глупое!Отметьте это или

Может быть в цикле или

У вас есть несколько запросов на это же!

...