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

Funkcja nwarunkowa if nie działa

Object Storage Arubacloud
+1 głos
332 wizyt
pytanie zadane 10 lutego 2022 w PHP przez Piotrek2713 Mądrala (5,380 p.)

Witam. Robię skrypty logowania do strony. Mam instrukcję warunkową if i problem polega na tym, że gdy pierwszy warunek jest spełniony nie wyświetla się napis Error. Gdy spełni się warunek z else wyświetla się napis It works zgodnie z kodem.

<?php

	require_once "connect.php";

	$polaczenie = @new mysqli($hostname, $username, $userpass, $dbname);

	if ($polaczenie->connect_errno!=0)
	{
		echo "Error";
	}
	else
	{
		echo "It works";
		$polaczenie->close();
	}
?>

 

komentarz 10 lutego 2022 przez Velta Maniak (52,010 p.)
Dlaczego używasz operatora ignorowania błędów?
komentarz 10 lutego 2022 przez Piotrek2713 Mądrala (5,380 p.)
Nie rozumiem, jakiego operatora? Robiłem to tak samo jak w drugim kursie php pana Mirosława
komentarz 10 lutego 2022 przez Wiciorny Ekspert (270,150 p.)
Operator Opis
@ Operator ignorowania błędów, postawiony przed wyrażeniem ignoruje ewentualne błędy
komentarz 10 lutego 2022 przez Piotrek2713 Mądrala (5,380 p.)

usunąłem, ale nadal to samo

<?php

	require_once "connect.php";

	$polaczenie = new mysqli($hostname, $username, $userpass, $dbname);

	if ($polaczenie->connect_error!=0)
	{
		echo "Error";
	}
	else
	{
		echo "It works";
		$polaczenie->close();
	}
?>

 

1
komentarz 10 lutego 2022 przez Wiciorny Ekspert (270,150 p.)

to nie jest przyczyna błędu, w jakim celu w ogóle programujesz w ten sposób? Kopiujesz to co na filmie, bez opamiętania, nie czytasz za co odpowiada to czego używasz ... to Cie niczego nie nauczy

a jak sprawdzasz, ze faktycznie warunek jest spelniony :)? 
Dlaczego uważasz, że wartość !=0 jest spelniona jesli polaczenia nie uzyszkasz rezultatem bedzie "False"  a rózne !=0 nie bedzie 
 

 $polaczenie = mysql_connect('localhost','username','password');
//(...)
if( $polaczenie == false){
   echo "Error"
}


 

komentarz 10 lutego 2022 przez Piotrek2713 Mądrala (5,380 p.)
Oglądam film starając się zrozumieć i sam robię podobny kod. Ale nie rozumiem gdzie jest błąd w moim kodzie i chcę wiedzieć co zrobiłem źle

1 odpowiedź

–1 głos
odpowiedź 11 lutego 2022 przez VBService Ekspert (253,340 p.)
edycja 11 lutego 2022 przez VBService

Taki zapis jest wystarczający if ($polaczenie->connect_errno), bo gdy nie ma błędu $polaczenie->connect_errno zwraca 0 (zero) i w php jest to traktowane jako false a każda inna wartość (kod błędu - liczba większa od zera - w przypadku connect_errno, bo każda inna wartość niż zero to też true) to true.

 

<?php
 
    require_once "connect.php";
 
    $polaczenie = @new mysqli($hostname, $username, $userpass, $dbname);
 
    if ($polaczenie->connect_errno)
    {
        echo "Error: " . $polaczenie->connect_error; // treść komunikatu błędu
    }
    else
    {
        echo "It works";        
    }

    $polaczenie->close();
?>

 

no i niezależnie od wyniku if-a lepiej jest zamknąć połączenie z "bazą danych", czyli "wyciągnij" $polaczenie->close() poza warunek.  smiley

 

[ UPDATE ]

Operator @ powoduje, że "silnik" php-a nie "wypluwa błędów na ekran".

   echo '<h1>Bez użycia operatora @</h1>';
   $polaczenie = new mysqli($hostname, $username, $userpass, $dbname);
   if ($polaczenie->connect_errno)
        echo "Error: " . $polaczenie->connect_error;
   
   echo '<br /><br /><h1>Z użyciem operatora @</h1>';
   $polaczenie = @new mysqli($hostname, $username, $userpass, $dbname);
   if ($polaczenie->connect_errno)
        echo "Error: " . $polaczenie->connect_error;

How to log errors and warnings into a file in php?

 

 

P.S. Jeżeli po warunku "występuje" tylko jedna linia kodu, możesz pominąć klamry { .. }  wink

<?php
  
    require_once "connect.php";
  
    $polaczenie = @new mysqli($hostname, $username, $userpass, $dbname);
  
    if ($polaczenie->connect_errno)
        echo "Error: " . $polaczenie->connect_error; // treść komunikatu błędu
    else
        echo "It works";        
 
    $polaczenie->close();
?>

 

komentarz 11 lutego 2022 przez VBService Ekspert (253,340 p.)
edycja 11 lutego 2022 przez VBService

Dla tego co dał down vote-a.  smiley

każda inna wartość niż zero to też true

[ on-line ]

<?php
if (-2)
	echo '-2 ';

if (-1)
	echo '-1 ';
    
if (0)
	echo '0 ';
    
if (1)
	echo '1 ';
    
if (2)
	echo '2 ';
?> 

 

Podobne pytania

0 głosów
1 odpowiedź 488 wizyt
pytanie zadane 17 stycznia 2018 w PHP przez Adam Ostrogórski Obywatel (1,070 p.)
0 głosów
1 odpowiedź 362 wizyt
pytanie zadane 10 lipca 2017 w PHP przez Rekus Użytkownik (500 p.)
0 głosów
2 odpowiedzi 346 wizyt
pytanie zadane 25 maja 2015 w PHP przez ArturB Mądrala (6,060 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...