Кто-нибудь может сказать мне, почему это не работает?
Я пытаюсь создать таблицу со вставкой и создать для нее уникальный идентификатор, затем я хочу обновить эту таблицу на другой странице, но выбрав таблицу с уникальным идентификатором.
Но по какой-то причине все, что я получаю, это работа с первой вставкой, но обновление не будет .. Кто-нибудь может помочь ..
Большое спасибо
СОЗДАТЬ ТАБЛИЦУ С УНИКАЛЬНЫМ ID
$listID=rand(10,100);
$db = new PDO("mysql:host=localhost;dbname=classifieds2", 'root', ''); // 1. set database with this instead of conect - or change conect to this
$query = "INSERT INTO `listings` (`username`,`listID`) VALUES (?,?)";
$stat=$db->prepare($query);$stat=$db->prepare($query);
$stat->execute(array("$accountname","$listID"));
Затем обновите эту таблицу следующим кодом, который не работает
$db = new PDO("mysql:host=localhost;dbname=classifieds2", 'root', ''); // 1. set database with this instead of conect - or change conect to this
$query = "UPDATE `listings` SET (`date`,`firstname`,`lastname`,`title`,`info`,`location`,`phone`,`postcode`,`town`,`city`,`image`,`image2`,`image3`,`image4`,`image5`,`price`,`catagory`,`cond`,`delivery`,`username`,`email`,`youtubevideo`,`paypal`,`facebook`,`twitter`,`feedbackscore`) WHERE listID=? VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stat=$db->prepare($query);$stat=$db->prepare($query);
$stat->execute(array("$now","$firstname","$lastname","$sellingtitle","$sellinginfo","$town","$phone1","$postcode","$town","$city","$i0url","$i1url","$i2url","$i3url","$i4url","$price","$catagory","$cond","$delivery","$sellername","$email","$youtubeurl","$paypal","$facebook","$twitter","feedbackscore","$listID"));
listid отправляется через POST на принимающую страницу, которая обновляется, и уникальный идентификатор вставляется в таблицу из первого запроса, но обновление не работает. Кто-нибудь может понять, почему?
Настройте PDO на выдачу исключений, и он сообщит вам, что не удается.
Имейте в виду, что каждый ? должен иметь соответствующее значение в том же месте массива для execute. Ваш $listID должен быть в передней части этого массива, а не в конце. Также уменьшите их до одного: $stat=$db->prepare($query);$stat=$db->prepare($query);
Не обновляет синтаксис update tablename set fieldname=?, field2=? where key=?
хорошо, я попробую отчеты об ошибках, и цитаты - это то, что мне показали, как это сделать ... как ученик, которого вы видите.
Я не уверен, могут ли значения идти после того, как в заявлении обновления sql. Кто-нибудь?
$ stat = $ db-> prepare ($ query); $ stat = $ db-> prepare ($ query) ;, о да, я этого не видел ... спасибо
Array ([0] => 42000 [1] => 1064 [2] => У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MariaDB, чтобы найти правильный синтаксис рядом с '(date, firstname , lastname, title, info, location, phone, postcode, "буксир" в строке 1)
По желанию, я бы предложил использовать в ваших запросах именованные параметры, а не кучу вопросительных знаков. Он более гибкий, а также намного проще выявлять ошибки. Особенно, когда у вас есть много параметров, как у вас здесь.
@NigelRen Я не уверен, потому что запрос на вставку имеет два разных синтаксиса. INSERT INTO ..VALUES и INSERT INTO... SET(. Лень проверять мануал






Update listings set column1=?,
column2=? Where column3=?
Что со всеми этими переменными заключены в двойные кавычки? Это излишне.