- UPDATE на няколко реда и няколко колони от таблица
WT форуми -> PHP MySQL ASP.NET -> UPDATE на няколко реда и няколко колони от таблица
Създайте нова тема Напишете отговор 
Автор Съобщение
djidja83
Нов
Нов

Регистриран на: 02/01/2016 11:49 pm

Support: 0
Bonus: 0
Мнения: 45
Мнение 21/06/2018 3:16 pm     UPDATE на няколко реда и няколко колони от таблица Отговорете с цитат


Пробвам тази заявка

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Graduation_thesis";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("За съжаление, MySQL връзката не може да бъде осъществена" . $conn->connect_error);
}
mysqli_set_charset($conn, 'utf8');
$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '4', `qid` = '0' WHERE `mixed`.`id` = 1
UPDATE `mixed` SET `bid` = '0', `pqid` = '10', `qid` = '0' WHERE `mixed`.`id` = 2
UPDATE `mixed` SET `bid` = '0', `pqid` = '11', `qid` = '0' WHERE `mixed`.`id` = 3";
if ($conn->query($mysqli) === TRUE) {
echo "Данните са въведени успешно";
} else {
echo "Грешка при въвеждане на данните: " . $conn->error;
}
$conn->close();
?>

Но ми дава следната грешка

Грешка при въвеждане на данните: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE `mixed` SET `bid` = '0', `pqid` = '10', `qid` = '0' WHERE `mixed`.`id`' at line 2

Ако го направя така

$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '4', `qid` = '0' WHERE `mixed`.`id` = 1";
$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '10', `qid` = '0' WHERE `mixed`.`id` = 2";
$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '11', `qid` = '0' WHERE `mixed`.`id` = 3";

Променя само последния ред.

Четох много в интернет, пробвах различни варианти на заявката, но не се получава.

Идеи?

Благодаря!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1474
Мнение 21/06/2018 4:57 pm      Отговорете с цитат


Цитат:
$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '4', `qid` = '0' WHERE `mixed`.`id` = 1";
$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '10', `qid` = '0' WHERE `mixed`.`id` = 2";
$mysqli = "UPDATE `mixed` SET `bid` = '0', `pqid` = '11', `qid` = '0' WHERE `mixed`.`id` = 3";

Променя само последния ред.


Това е само присвояване на променлива. За да сработи, трябва Не да присвояваш, да Изпълниш командата mysqli_query:

PHP code:
mysqli_query("UPDATE `mixed` SET `bid` = '0', `pqid` = '4', `qid` = '0' WHERE `mixed`.`id` = 1");
mysqli_query("UPDATE `mixed` SET `bid` = '0', `pqid` = '10', `qid` = '0' WHERE `mixed`.`id` = 2");
mysqli_query("UPDATE `mixed` SET `bid` = '0', `pqid` = '11', `qid` = '0' WHERE `mixed`.`id` = 3");


Алтернативата е да изпълниш заявките с едно извикване на mysqli_query, но тогава ще трябва да ги разделиш с ';'. В първоначалния ти опит си ги разделил с нови редове, но в mysql новите редове не означават нова команда - а трябва да използваш точка и запетая ';'.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 350
Bonus: 698
Мнения: 2649
Мнение 22/06/2018 8:06 am      Отговорете с цитат


Също така на mysqli_query трябва да подадеш връзката с базата данни като първи параметър.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1474
Мнение 22/06/2018 11:07 am      Отговорете с цитат


Fakeheal написа:
Също така на mysqli_query трябва да подадеш връзката с базата данни като първи параметър.

Мерси за забележката, изобщо не обърнах внимание Very Happy
Но като така и така ползва ObjectOriented API-to може да ги вика като методи.

PHP code:
$conn->query("UPDATE `mixed` SET `bid` = '0', `pqid` = '4', `qid` = '0' WHERE `mixed`.`id` = 1");
// etc.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
djidja83
Нов
Нов

Регистриран на: 02/01/2016 11:49 pm

Support: 0
Bonus: 0
Мнения: 45
Мнение 22/06/2018 5:19 pm      Отговорете с цитат


Вече ми е супер неудобно, но ... съжалявам. В крайна сметка докарах заявката до тук:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Graduation_thesis";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("За съжаление, MySQL връзката не може да бъде осъществена" . $conn->connect_error);
}
mysqli_set_charset($conn, 'utf8');
$conn->query ("UPDATE `mixed` SET `bid` = '0', `pqid` = '4', `qid` = '0' WHERE `mixed`.`id` = 1");
$conn->query ("UPDATE `mixed` SET `bid` = '0', `pqid` = '10', `qid` = '0' WHERE `mixed`.`id` = 2");
$conn->query ("UPDATE `mixed` SET `bid` = '0', `pqid` = '11', `qid` = '0' WHERE `mixed`.`id` = 3");
if ($conn === TRUE) {
echo "Данните са въведени успешно";
} else {
echo "Грешка при въвеждане на данните: " . $conn->error;
}
$conn->close();
?>

При изпълнение изписва Грешка при въвеждане на данните, а всъщност, като вляза в phpMyAdmin данните са въведени коректно.
Къде се омазах пак?
Благодаря!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 54
Bonus: 108
Мнения: 698
Мнение 22/06/2018 6:05 pm      Отговорете с цитат


Ако обичаш слагай си кода в [php ] таговете, за да се чете по-лесно.

Иначе проверката, която правиш е грешна. Най-лесно можеш да правиш проверка с:

PHP code:

if ( $conn->affected_rows !== -1 ) {
echo "Всичко е наред";
}
else {
// грешка в заявките
}



Но този подход не е много точен, защото или трябва след всяка заявка да я правиш и да изведеш една камара съобщения, или трябва да ги събираш някъде и да отчиташ дали всяка е минала, или може би най-правилното, ако искаш всички ЗАДЪЛЖИТЕЛНО да се изпълнят, да ги сложиш в транзакция.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1474
Мнение 23/06/2018 11:43 am      Отговорете с цитат


PHP code:
if ($conn === TRUE) {
echo "Данните са въведени успешно";

$conn е обект от тип mysqli, няма как да бъде === TRUE.


+ да подчертая за слагането на кода в съответните [phр]/[htmI]/... тагове.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети