Я хочу сделать вставку, только если в базе данных нет соответствия (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();
}
Где ВЫБРАТЬ
$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
пункт удвоился.