• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
391 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 (256,600 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 (27,550 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ź 960 wizyt
pytanie zadane 28 marca 2021 w SQL, bazy danych przez stanislawruszkowski Obywatel (1,310 p.)
0 głosów
1 odpowiedź 435 wizyt
pytanie zadane 28 listopada 2016 w PHP przez niezalogowany
0 głosów
1 odpowiedź 998 wizyt

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...