2013-09-17 5 views
0

Таблица соединений «memberprogram» содержит три поля (Memberid Programid Option_No). Когда я пытаюсь обновить строку, вместо обновления она вставляет новую строку.Вставка новой строки вместо обновления

мой код:

$query_find = "SELECT * FROM memberprogram WHERE ((Memberid == $Memberid) && (Option_No == 'Option A'))"; 
$result_query_find = mysqli_query($dbc, $query_find); 
if (mysqli_num_rows($result_query_find) == 1) 
{ 
$query_update = "UPDATE memberprogram SET memberprogram.Programid = (SELECT programs.Programid FROM programs WHERE programs.Program_Description = '$Program_Description') WHERE ((memberprogram.Memberid == $Memberid) && (memberprogram.Option_No == 'Option A'))"; 
     $result_query_update = mysqli_query($dbc, $query_update); 
    } 
     else { 

     $query_insert = "INSERT memberprogram SET memberprogram.Memberid = '$Memberid', memberprogram.Option_No = 'Option A', memberprogram.Programid = (SELECT programs.Programid FROM programs WHERE programs.Program_Description = '$Program_Description')"; 
     $result_query_insert = mysqli_query($dbc, $query_insert); 

}

+0

Вы уверены, что запрос 'SELECT' возвращает ровно 1 строку? Если нет, я могу сказать, увидев ваш код, что строка будет вставлена. –

+0

да он возвращает 1. я проверил его в phpmyadmin –

+0

попробуйте с 'echo mysqli_num_rows()' – aldanux

ответ

0

Я не верю, что функция запроса в PHPMyAdmin:

Попробуйте запрос:

SELECT * FROM memberprogram WHERE ((Memberid = $Memberid) AND (Option_No = 'Option A')); 

о равном-оператора должен быть =, а не ==.

И я рекомендую использовать AND вместо &&.

+0

И запрос 'UPDATE' OP также использует' == ', что может быть проблемой. –

+0

Да ... Надеюсь, он понимает, что это в основном означает – aldanux

Смежные вопросы