• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP-mysql błąd Error: 2002 który występuje tylko w przeglądarce windows

Object Storage Arubacloud
0 głosów
117 wizyt
pytanie zadane 11 sierpnia 2023 w PHP przez elradziu Nowicjusz (140 p.)

Cześć wszystkim,

Mam dziwną sytuację. A mianowicie jest napisany skrypt, który do dnia wczorajszego działał (nie było wykonywanych zmian). Wszystko postawione na hostingu webd. Wczoraj podczas otwierania strony nie zawsze (ale bardzo często dochodzi do błędu:
Couldn’t fetch mysqli w liniach 7 i 8.
A po zablokowaniu linii 7 i 8 pojawia się błąd 2002 oraz błędy dotyczące zmiennych które są zależne od wartości w bazie danych. Dziwne jest to, że:
1. Problem zaczął się pojawiać dopiero wczoraj,
2. Od czasu do czasu strona ładuje się prawidłowo (mowa o komputerze z systemem windows - choć nie powinno mieć to znaczenia wg. mnie).
3. Problem nie występuje gdy stronę otwieram z poziomu telefonu - tutaj wszystko działa poprawnie - to mnie już całkowicie rozbroiło bo kod PHP jest wykonywany po stronie serwera, a nie przeglądarki. 

 

Jakieś porady?

 

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL); 
session_start();
require_once "mysql.php";
$polaczenie = @new mysqli($dB_Data['host'], $dB_Data['user'], $dB_Data['pass'], $dB_Data['name']);
//$polaczenie->query("SET NAMES 'utf8'");
//$polaczenie->query('SET CHARACTER_SET utf8_general_ci');
if($polaczenie->connect_errno != 0)
{
    echo "Error: ".$polaczenie->connect_errno;
}
else echo '<center><div id="maintheme" style="font-size: 35px;  font-family: Garamond, serif;">Odczyt mat sensorycznychi</div></center>';
require_once 'rooms.php';

$rooms_in_row = 2;

 

1 odpowiedź

0 głosów
odpowiedź 11 sierpnia 2023 przez VBService Ekspert (253,420 p.)

 W pierwszej kolejności zrób kopie bazy danych. 


Spróbuj w cPanel (hosting webd) z poziomu phpMyAdmin wykonać takie polecenie

ALTER DATABASE `nazwa_bazy_danych` CHARACTER SET utf8 COLLATE utf8_general_ci;

dla całej bazy danych, żeby nie musieć pisać ciągle w kodzie php

$polaczenie->query('SET CHARACTER_SET utf8_general_ci');

 

używanie znaku @ chyba od wersji php 5.3+ (nie pamiętam za bardzo  wink) zaleca się unikanie tego operatora na rzecz obsługi błędów przy użyciu mechanizmów jak try...catch (dla obsługi wyjątków) lub error_reporting (dla zarządzania raportowaniem błędów).

<?php
  ini_set('display_errors', 1);
  error_reporting(E_ALL); 
  session_start();
  require_once "mysql.php";
  /*
  $dB_Data['host'] = 'localhost';
  $dB_Data['name'] = 'database';
  $dB_Data['user'] = 'username';
  $dB_Data['pass'] = 'password';
  $dB_Data['char'] = 'utf8mb4'; // nowe pole
  */

  try {
    $dsn = "mysql:host={$dB_Data['host']};dbname={$dB_Data['name']};charset={$dB_Data['char']}";
    $conn = new PDO($dsn, $dB_Data['user'], $dB_Data['pass']);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo 'Connected correctly';
  } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit();
  }

  echo '<center><div id="maintheme" style="font-size: 35px;  font-family: Garamond, serif;">'
     . 'Odczyt mat sensorycznych</div></center>';

  /*
    $sql = "SELECT id, firstname, lastname FROM users";
    $stmt = $conn->query($sql);

    while (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) {
      echo $row['firstname'];
    }

    // lub

    $sql = "SELECT id, firstname, lastname FROM users WHERE id=:users_id";
    $stmt = $conn-prepare($sql);
    $stmt->execute([':users_id' => 1]);

    while (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) {
      echo $row['firstname'];
    }

    // lub np.

    $sql = "SELECT id, firstname, lastname FROM users";
    $stmt = $conn->query($sql);
    $users = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($users as $user) {
      echo "{$user['firstname']} {$user['lastname']}<br>";
    }
  */

  require_once 'rooms.php';
  $rooms_in_row = 2;

  // zamknięcie połączenia
  //$conn = null;
?>

 

komentarz 11 sierpnia 2023 przez wizarddos Nałogowiec (25,930 p.)

używanie znaku @ chyba od wersji php 5.3+ (nie pamiętam za bardzo wink) zaleca się unikanie tego operatora na rzecz obsługi błędów przy użyciu mechanizmów jak try...catch (dla obsługi wyjątków) lub error_reporting (dla zarządzania raportowaniem błędów).

A od wersji bodajże 8.0 nie blokuje błędów mogących przedwcześnie zakończyć wykonanie programu 

Podobne pytania

+1 głos
1 odpowiedź 775 wizyt
pytanie zadane 28 marca 2021 w SQL, bazy danych przez stanislawruszkowski Obywatel (1,310 p.)
0 głosów
1 odpowiedź 339 wizyt
pytanie zadane 28 listopada 2016 w PHP przez niezalogowany
0 głosów
1 odpowiedź 771 wizyt

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...