Intereting Posts

Ошибка: количество связанных переменных не совпадает с числом токенов

Я хочу сделать вставку только в том случае, если в db (mySQL) нет корреспонденции, но он не делает мне заявление. Вот фрагмент

if ($sql->rowCount() > 0) { echo 'Non inserisci'; } else { echo 'Inserisci'; $db->beginTransaction(); echo 'Ciao3'; $sql = $db->prepare("INSERT INTO contatti (nome,cognome) VALUES (?,?)") or die('Ciao2'); echo 'Ciao4'; $sql->execute(array($_POST['nome'],$_POST['cognome'])); echo 'Ciao5'; $db->rollBack(); } 

Где SELECT

  $db->beginTransaction(); $sql = $db->prepare("SELECT * FROM contatti WHERE nome = ? AND cognome = ? WHERE nome = ? AND cognome = ?") or die ('Ciao1'); $sql->execute(array($_POST['nome'],$_POST['cognome'])); $db->rollBack(); 

Можете ли вы объяснить мне, где вина?

    Ошибка в арифметике

    Давайте подсчитаем токены:

      SELECT * FROM contatti WHERE nome = ? // one AND cognome = ? // two WHERE nome = ? // three AND cognome = ? // four 

    теперь давайте посчитаем количество связанных переменных:

     array($_POST['nome'], // one $_POST['cognome']) // two 

    4, по-видимому, не равно двум. Это проблема

    Кажется, вы сделали слишком много копирования / вставки здесь:

     $sql = $db->prepare("SELECT * FROM contatti WHERE nome = ? AND cognome = ? WHERE nome = ? AND cognome = ?") or die ('Ciao1'); 

    вероятно, просто

     $sql = $db->prepare("SELECT * FROM contatti WHERE nome = ? AND cognome = ?") or die ('Ciao1'); 

    У вас было WHERE два раза.