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

Połączenie z bazą danych nie działa, tylko w tym kodzie

Object Storage Arubacloud
+3 głosów
299 wizyt
pytanie zadane 4 kwietnia 2015 w PHP przez shadax Obywatel (1,850 p.)

Mam taki kod:

Formularz:

<html>

<body>

<form method="post" action="skrypt.php">
<input type="submit" value="Klik" name="submit">
</form>


</body>


</html>

skrypt.php:

<?php
function display()
{
echo "Sukces!";
}
if(isset($_POST['submit']))
{
display();

?>

 No i mam problem, bo jak chcę wszystko połączyć z UserCake albo bazą danych (po echo "Sukces!";) to występują errory, np.:

Fatal error: Call to a member function prepare() on null in C:\...\xampp\htdocs\userCakeV2.0.2\models\config.php on line 9

Ten kod, to połączenie z bazą danych, która na wszystkich stronach oczywiście działa, tylko nie tutaj :(

 

Ma ktoś jakieś pomysły?

2 odpowiedzi

+2 głosów
odpowiedź 4 kwietnia 2015 przez toaspzoo Dyskutant (8,300 p.)
wybrane 4 kwietnia 2015 przez Mirosław Zelent
 
Najlepsza
Jeśli korzystasz z pdo, to wygląda na to, że instancja pdo nie została zainicjalizowana.
komentarz 4 kwietnia 2015 przez shadax Obywatel (1,850 p.)

A można to w jakiś sposób zainicjować?

Tak wygląda ten początek kodu:

require_once("db-settings.php");


$stmt = $mysqli->prepare("SELECT id, name, value
    FROM ".$db_table_prefix."configuration");    //Tutaj właśnie kod wyrzuca error

Normalnie cały kod działa, ale jak wrzucam go do

function display() 


To pojawia się ten błąd

komentarz 4 kwietnia 2015 przez toaspzoo Dyskutant (8,300 p.)

Plik db-settings.php jak wygląda (tylko zakryj hasła :P)?

 

komentarz 4 kwietnia 2015 przez shadax Obywatel (1,850 p.)

$db_host = "localhost"; //Host address (most likely localhost)
$db_name = "mysqli"; //Name of Database
$db_user = "root"; //Name of database user
$db_pass = ""; //Password for database user
$db_table_prefix = "uc_";

GLOBAL $errors;
GLOBAL $successes;

$errors = array();
$successes = array();


$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
GLOBAL $mysqli;

if(mysqli_connect_errno()) {
    echo "Connection Failed: " . mysqli_connect_errno();
    exit();
}

komentarz 4 kwietnia 2015 przez toaspzoo Dyskutant (8,300 p.)

Po co to tam GLOBAL $mysqli?

function display()  

Global $mysqli;

 

}

Tutaj wrzuć Global $mysqli; i powinno działać :)

komentarz 4 kwietnia 2015 przez toaspzoo Dyskutant (8,300 p.)

Dla potomnych: dyrektywy Global używa się dopiero wtedy, gdy chcemy użyć zmiennej z poza obszaru danej metody/funkcji. Interpreter wie wtedy, że gdy odwołamy się do wspomnianej zmiennej, nie będzie to zmienna lokalna.

komentarz 4 kwietnia 2015 przez shadax Obywatel (1,850 p.)

Wielkie dzięki! laugh

 

Tylko dalej nie rozumiem, czemu wszystko działało, dopóki nie wrzuciłem tego, do tej funkcji :p

komentarz 4 kwietnia 2015 przez toaspzoo Dyskutant (8,300 p.)

Ponieważ odwoływałeś się do zmiennej $mysqli obrębie funkcji display.

Bardzo kolokwialnie mówiąc, dyrektywa Global każe funkcji szukać zmiennej głębiej niż tylko w swoim obrębie.

0 głosów
odpowiedź 4 kwietnia 2015 przez darekj19 Użytkownik (910 p.)
Odinstaluj  program i zainstaluj i  napisz od nowa .
komentarz 4 kwietnia 2015 przez shadax Obywatel (1,850 p.)
Jaki program? Xamppa?

 

Ten kod, który wklejam do funkcji, działa bez zarzutu osobno, więc to raczej nie jest wina programu

 

Przesłałem sobie teraz kod na witrynę i strona nie wyświetla błędu, ale w tym samym miejscu w kodzie nastepuje zatrzymanie kodu, tak jakby die();

Podobne pytania

+1 głos
1 odpowiedź 250 wizyt
pytanie zadane 24 lutego 2022 w SQL, bazy danych przez Piotrek2713 Mądrala (5,500 p.)
0 głosów
2 odpowiedzi 241 wizyt
pytanie zadane 23 lipca 2016 w PHP przez MaciekM Użytkownik (990 p.)
0 głosów
1 odpowiedź 455 wizyt
pytanie zadane 24 maja 2023 w PHP przez szoopa Nowicjusz (190 p.)

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,004 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!

...