• 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

VPS Starter Arubacloud
+1 głos
426 wizyt
pytanie zadane 10 lutego 2022 w PHP przez Piotrek2713 Mądrala (5,500 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,750 p.)
Dlaczego używasz operatora ignorowania błędów?
komentarz 10 lutego 2022 przez Piotrek2713 Mądrala (5,500 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 (277,460 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,500 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 (277,460 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,500 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 (255,840 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 (255,840 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ź 596 wizyt
pytanie zadane 17 stycznia 2018 w PHP przez Adam Ostrogórski Obywatel (1,070 p.)
0 głosów
1 odpowiedź 458 wizyt
pytanie zadane 10 lipca 2017 w PHP przez Rekus Użytkownik (500 p.)
0 głosów
2 odpowiedzi 373 wizyt
pytanie zadane 25 maja 2015 w PHP przez ArturB Mądrala (6,060 p.)

93,008 zapytań

141,975 odpowiedzi

321,256 komentarzy

62,350 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...