Автор Тема: Бъг в базата данни  (Прочетена 302 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Mysqli

  • Newbie
  • *
  • Благодарности
  • -Казани: 8
  • -Получени: 0
  • Публикации: 17
Re: Бъг в базата данни
« Отговор #15 -: 11 Юни 2020, 17:28:10 »


Ей най накрая успях да вкарам запис )) Е това ми помогна да видя какво липсва .. От грешка на грешка вкарах всички полета и го посна в базата ... Значи има разлика от начина на запис от преди и сега , така ли да разбирам ?


Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 274
  • Публикации: 2601
  • meow
Re: Бъг в базата данни
« Отговор #16 -: 12 Юни 2020, 10:32:47 »
По-скоро ти е включен Strict Mode, който в предните версии на MySQL не беше пуснат по подразбиране - https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-strict
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Mysqli

  • Newbie
  • *
  • Благодарности
  • -Казани: 8
  • -Получени: 0
  • Публикации: 17
Re: Бъг в базата данни
« Отговор #17 -: 12 Юни 2020, 12:22:43 »
А може ли това нещо да се променя от настройките и къде точно.. да не бъркам аз сам, че преди бърках по базата и я потроших, та трябваше всичко от начало да инсталирам ))
Тук при мен сега със записа е чудо ! Кефя се кат дете, но дълбаенето и то си върви ... Сега пък като включа primary key ключ да има на cat-id, за да се опитам да направя с него  delite на категориите, спира записа ! Записва една група и повече не може ! Абе чудо е ))
 Интересна професия е това било много, но и колко време троши когато не си учил основни неща не е за говорене ))
« Последна редакция: 13 Юни 2020, 11:31:25 от Mysqli »

Mysqli

  • Newbie
  • *
  • Благодарности
  • -Казани: 8
  • -Получени: 0
  • Публикации: 17
Re: Бъг в базата данни
« Отговор #18 -: 13 Юни 2020, 11:31:36 »
For data-change operations (INSERT, UPDATE):

If strict mode is not enabled, division by zero inserts NULL and produces no warning.

If strict mode is enabled, division by zero produces an error, unless IGNORE is given as well. For INSERT IGNORE and UPDATE IGNORE, division by zero inserts NULL and produces a warning.

For SELECT, division by zero returns NULL. Enabling strict mode causes a warning to be produced as well.

То било лесно , но трябва да се чете точната информация )) Мерси още веднъж ...

Между другото, аз нямам английски и това също ми натиска спирачката, но полека лека и него ще науча, няма как ))
« Последна редакция: 13 Юни 2020, 11:34:30 от Mysqli »

Mysqli

  • Newbie
  • *
  • Благодарности
  • -Казани: 8
  • -Получени: 0
  • Публикации: 17
Re: Бъг в базата данни
« Отговор #19 -: 15 Юни 2020, 00:57:10 »
Тук сега пък нов бъг !

Значи с този if($_post['login']<3) правя проверка за дължина на името и по принцип ако всичко е нормално, при повече от 3 букви се прави запис, но ако е по малко от три, запис не трябва да има и излиза предупреждение "кратко име" . А при мен и двете стават.  И предупреждение излиза за кратко име и запис си върви в базата, нищо че името е с една буква да речем. Защо така става! Нали по принцип в блока if командите следват заявката и всичко което е в блока се върши според истината в заявката .

Код: PHP
  1. <?php
  2. include'function.php';
  3.  
  4. hedar('register');
  5.  
  6. if(isset($_POST['login'], $_POST['pass'], $_POST['pass2'], $_POST['mail'], $_POST['real_name']) and $_POST['login']!='')
  7. {
  8.         if($_POST['login']<3){
  9.                 echo 'кратко име';
  10.                
  11.            if($_POST['pass']==$_POST['pass2'])
  12.         {
  13.                             $login = ($_POST['login']);
  14.                                 $pass = ($_POST['pass']);
  15.                                 $mail = ($_POST['mail']);
  16.                                 $name = ($_POST['real_name']);
  17.                                
  18.                                
  19.                                         $dn2 = mysqli_num_rows(mysqli_query($m,'select user_id from users'));
  20.                                         $id = $dn2+1;
  21.  
  22.                             if(mysqli_query($m,'INSERT INTO users(user_id, login, pass, real_name, mail, data) values ('.$id.', "'.$login.'", "'.$pass.'", "'.$name.'", "'.$mail.'", "'.time().'")'))
  23.                                         {
  24.                                                
  25.                                                 ?>
  26. <div class="message">готово , регистриран си , можеш да влизаш.<br />

Mysqli

  • Newbie
  • *
  • Благодарности
  • -Казани: 8
  • -Получени: 0
  • Публикации: 17
Re: Бъг в базата данни
« Отговор #20 -: 25 Юни 2020, 12:19:12 »
Даже и в страницата Научи ме, трябва да "откраднеш" познания, отколкото някой да те научи нещо  полезно! Жалко.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 1001
  • Кибик
Re: Бъг в базата данни
« Отговор #21 -: 05 Юли 2020, 22:53:07 »
С това
Код: PHP
  1. $_POST['login']<3
не се проверява дължината на стринга !!!
Разгледай https://www.php.net/manual/en/function.strlen.php и пробвай
Код: PHP
  1. \strlen($_POST['login'])<3
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой