Fatal error: Call to a member function bind_param() on boolean
Last Updated: Jan 20 2016 22:16, Started by
dellenovo
, Jan 16 2016 23:02
·
0
#1
Posted 16 January 2016 - 23:02
Salut stimati forumisti, v-as ruga, bineinteles pe cei binevoitori, sa ma ajutati cu o problema:
Am o aplicatie de tip CRUD, mai exact un script php, iar la un moment dat, primesc eroarea urmatoare: Fatal error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\create.php on line 17 Recunosc ca nu este tocmai domeniul meu, insa incerc sa fac "jucaria" asta sa mearga pe computerul personal. Am nevoie de ajutor, si desi probabil nu am postat in aria corespunzatoare si imi cer scuze pentru asta, sper ca ma veti ajuta, cel putin cu un sfat, sau o solutie, daca sunteti dispusi sa acordati putin din timpul vostru pretios pentru asta. Multumesc anticipat. Attached Files |
#2
Posted 17 January 2016 - 11:00
Verifica raspunsul de la db_prepare
if( ! $insert = $db->prepare( .... ) ) { echo 'Error: ' . $db->error; die(); } else { // restul codului..... } Vezi ce eroare ai acolo. |
#3
Posted 17 January 2016 - 14:21
Alphatech, on 17 ianuarie 2016 - 11:00, said:
Verifica raspunsul de la db_prepare if( ! $insert = $db->prepare( .... ) ) { echo 'Error: ' . $db->error; die(); } else { // restul codului..... } Vezi ce eroare ai acolo. Acum imi returneaza asta: Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\create.php on line 16 <?php require 'db/connect.php'; $error = ""; //variable to hold our form error message $success = ""; //variable to hold our success message if(isset($_POST['create'])){ $nume = trim($_POST['nume']); $prenume = trim($_POST['prenume']); $cnp = trim($_POST['cnp']); $adresa = trim($_POST['adresa']); $observatii = trim($_POST['observatii']); if(empty($nume) && empty($prenume) && empty($cnp) && empty($adresa) && empty($observatii)){ $error = "Trebuie sa completati campurile goale."; } else{ if($insert = $db->prepare("INSERT INTO persoane (nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, NOW())"); echo 'Eroare la:'. $db->error; die(); } else{ $insert->bind_param('sssss', $nume, $prenume, $cnp, $adresa, $observatii); if($insert->execute()){ //$success = "Persoana adaugata cu succes!"; header("location:index.php"); } } } ?> <!DOCTYPE html> <html lang="en"> <head> <title>CRUD</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="wrapper"> <h1>Adauga persoane:</h1> <span class="error"><?php if(isset($error)) echo $error;?></span> <span class="success"><?php if(isset($success)) echo $success;?></span> <form action="" method="post"> <table class="table"> <tr> <td><label for="nume">Nume:</label></td> <td><input type="text" id="nume" name="nume"></td> </tr> <tr> <td><label for="prenume">Prenume:</label></td> <td><input type="text" id="prenume" name="prenume"></td> </tr> <tr> <td><label for="cnp">C.N.P:</label></td> <td><input type="text" id="cnp" name="cnp"></td> </tr> <tr> <td><label for="adresa">Adresa:</label></td> <td><input type="text" id="adresa" name="adresa"></td> </tr> <tr> <td><label for="observatii">Observatii:</label></td> <td><textarea id="observatii" name="observatii"></textarea></td> </tr> <tr> <td></td> <td><button type="submit" class="create" name="create">ADAUGA</button> <a class="btn" href="index.php">INAPOI</a></td> </tr> </table> </form> </div> </body> </html> V-am zis, nu sunt un bun cunoscator al limbajului de programare Php, ma descurc pe ici pe colo, nu am reusit sa invat totul. Sunt incepator, si stiti cum este acum.... undeva lipesti, pe alta parte se desface! Multumesc. Edited by dellenovo, 17 January 2016 - 14:22. |
#5
Posted 17 January 2016 - 19:55
yonut_a, on 17 ianuarie 2016 - 14:55, said:
pune si tu parantezele corect la if ul ala Scuze, cu riscul de a parea total noob, nu reusesc sa gasesc acele paranteze despre care vorbesti. Cel mai probabil, cred eu, mi-ar lipsi " { " la finalul acestei linii de cod, sau? if($insert = $db->prepare("INSERT INTO persoane (nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, NOW())"); Scuze, cu riscul de a parea total noob, nu reusesc sa gasesc acele paranteze despre care vorbesti. Cel mai probabil, cred eu, mi-ar lipsi " { " la finalul acestei linii de cod, sau? if($insert = $db->prepare("INSERT INTO persoane (nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, NOW())"); L.E. - Scuze, va rog, daca este cineva dispus sa corecteze direct pe codul acesta, as fi recunoscator. Eu nu am profesor, tot ce fac, fac cu ajutorul internetului,insa aici sunt complet blocat. Nu vreau sa para ca face altcineva munca in locul meu, doar ca nu reusesc sa imi dau seama unde este eroarea. De fiecare data cand modific ceva, imi da eroare ori mai sus cu o linie, doua, trei, in functie, ori mai jos...... Nu trece mai departe. Probabil tipul de variabile declarat in baza de date, nu corespunde cu codul scris. CREATE TABLE persoane ( id INT(11) AUTO_INCREMENT, nume VARCHAR(30), prenume VARCHAR(50), cnp VARCHAR(13), adresa TEXT, observatii TEXT, PRIMARY KEY (id) ); Edited by dellenovo, 17 January 2016 - 19:57. |
#6
Posted 17 January 2016 - 20:00
if($insert = $db->prepare("INSERT INTO persoane (nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, NOW())");
ai deschis 2 paranteze rotunde, inchide 2 ; dupa if nu are ce cauta , acolo era nevoie de { si cred ca mai ai si niste } inchise airea acolo. Sa fii atent unde deschizi si unde inchizi ( si { nu e nevoie sa fii guru programator , e nevoie doar de atentie |
#7
Posted 17 January 2016 - 20:21
yonut_a, on 17 ianuarie 2016 - 20:00, said:
if($insert = $db->prepare("INSERT INTO persoane (nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, NOW())"); ai deschis 2 paranteze rotunde, inchide 2 ; dupa if nu are ce cauta , acolo era nevoie de { si cred ca mai ai si niste } inchise airea acolo. Sa fii atent unde deschizi si unde inchizi ( si { nu e nevoie sa fii guru programator , e nevoie doar de atentie Multumesc. Apoi mi-a indicat ceva in genul cum ca ar fi o coloana lipsa, sau nedeclarata. Am modificat codul precum aici: <?php require 'db/connect.php'; $error = ""; //variable to hold our form error message $success = ""; //variable to hold our success message if(isset($_POST['create'])){ $id = trim($_POST['id']); $nume = trim($_POST['nume']); $prenume = trim($_POST['prenume']); $cnp = trim($_POST['cnp']); $adresa = trim($_POST['adresa']); $observatii = trim($_POST['observatii']); if(empty($id) || empty($nume) || empty($prenume) || empty($cnp) || empty($adresa) || empty($observatii)) $error = 'Trebuie sa completati campurile goale.'; else { $sql = "INSERT INTO persoane (id, nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, ?, NOW())"; if($insert = $db->prepare($sql)) { $insert->bind_param('ssssss', $id, $nume, $prenume, $cnp, $adresa, $observatii); if($insert->execute()){ //$success = 'Persoana adaugata cu succes!'; header('location: index.php'); exit; } } else $error = $db->errno .'-'. $db->error; //preia eroarea sql } } ?> Iar cu acea eroare din prima imagine afisata, in momentul in care incerc sa adaug persoane in baza de date, pe pagina index.php, apar urmatoarele: Untitled.png 21.94K 8 downloads Untitled.png 32.91K 8 downloads Edited by dellenovo, 17 January 2016 - 20:31. |
#9
Posted 17 January 2016 - 21:08
Pachetul XAMPP.... Daca doresti alte detalii, pot sa caut sa vad ce versiune de Apache foloseste!
Untitled.png 235.52K 5 downloads |
#10
Posted 19 January 2016 - 00:58
Nimeni, nimic... nici o idee? Ionut, daca iti arhivez si trimit cele 5-6 pagini cu codul, sa te uiti prin ele ?
Eu nu reusesc sub nici o forma sa o scot la cap, ma depaseste deoarece nu cunosc in totalitate tipurile de date, si limbajul php. Sunt bun pe partea de Front-END, insa ma lovesc uneori si de BACKEND. Ti-as ramane recunoscator, daca ai face asta pentru mine. |
|
#11
Posted 19 January 2016 - 07:38
da, codul complet ar fi util, o sa arunc o privire cand voi avea timp
Edited by yonut_a, 19 January 2016 - 07:38. |
#12
Posted 19 January 2016 - 07:45
Poti sa atasezi tot codul la topic. Pot sa te ajut si eu.
|
#13
Posted 19 January 2016 - 20:17
#14
Posted 19 January 2016 - 21:32
M am uitat pe cod si e plin de greseli cauzate de neatentie si cam atat
sa vedem in view.php SELECT id, nume, prenume, cnp, adresa, observatii, FROM persoane WHERE id = ? Ai o virgula dupa campul observatii => query invalid in create.php ai $id = trim($_POST['id']); $insert = $db->prepare("INSERT INTO persoane (id, nume, prenume, cnp, adresa, observatii) VALUES (?, ?, ?, ?, ?, ?, NOW())"); $insert->bind_param('ssssss', $id, $nume, $prenume, $cnp, $adresa, $observatii); de ce iei id in POST daca nu il trmiti nicaieri in form ? Fiind gol nu ai ce insera in mysql. Fa id autoincrement in tabelul de mysql si nu mai ai treaba cu el la insert. Apoi in insert ai doar 6 campuri si vrei sa inserezi 7 valori (NOW() ala de sf nu are niciun camp echivalent) => query invalid In edit.php faci aceeasi treaba cu id prin post pe care nu il trimiti si nu vad scopul UPDATE persoane SET id = ?care e logica sa mai updatezi id ul ? Ala trebuie sa fie identificatul liniei nu e voie sa il updatezi si nu are sens sa faci asta mai ales ca ai pus conditia WHERE id = ? Si iarasi ai in query mai multe variabile decat faci bind. Pe viitor activeaza logurile la php , mysql si cand ai erori citestele. Asa faci debug corect si usor la o aplicatie php |
#15
Posted 20 January 2016 - 01:24
Ok, ma apuc de corectat. Multumesc.
Neatentie, poate, insa exact cum am spus, abia fac primii pasi in php. Uneori ma depaseste. Multumesc mult pentru ajutor si efortul de a imi revizui codul. Eu ma apuc de corectat, revin cu update-uri. |
|
#17
Posted 20 January 2016 - 17:33
Nasol ... de ce sa te lasi pagubas in loc sa faci debug ?
|
#18
Posted 20 January 2016 - 22:16
yonut_a, on 20 ianuarie 2016 - 17:33, said:
Nasol ... de ce sa te lasi pagubas in loc sa faci debug ? Eu nu am nici un fel de pregatire in limbajul php. Tot ceea ce fac este sa compar forma sintaxei originale, pe internet, cu sintaxa pe care o modific in functie de ceea ce am nevoie. Am crezut ca pot face un script initial gasit pe internet sa functioneze si pentru mine, in forma de care aveam nevoie. L-am modificat in speranta ca va fi totul ok in final. Si mi-a iesit o opera de arta, cel putin pentru mine asta este. Chiar daca nu merge. Acum mi-a trezit interesul de a invata PHP. V-am zis, sunt foarte bun ca programator FRONT-END, cel putin pe partea de grafica stau foarte bine, insa cand ajung la partea de BACK END, lucrul cu tehnologii de tip server si limbaje specifice, uite...ca .. mi-am prins urechile. Am crezut ca voi gasi ajutor si voi reusi sa fac acest script sa mearga. Ceea ce s-a intamplat intr-o mica mare masura. Ajutorul l-am gasit, insa, necunoscand forma corecta a sintaxelor si declaratiilor de variabile in PHP, nu reusesc sa fac acest debug. Deci, nu voi reusi sa il termin in timp util. Mai degraba, ma las pagubas, studiez PHP, revin asupra acestui proiect si atunci poate il duc la cap. O sa imi fie greu, insa nu imposibil. Din ce vad, PHP nu prea il poti invata precum HTML, CSS, sau Photoshop, adica... din mers. De aceea ma las pagubas acum, am descarcat deja un manual php de pe net, e o versiune mai veche insa sper sa ma ajute sa inteleg mai bine toate conceptele si specificatiile acestui limbaj de tip server-side. Desi mi-ar trebui scriptul functional in saptamana urmatoare, imi vine greu sa va cer sa il faceti sa functioneze. Nu stiu cum v-as putea recompensa si nici daca ar trebui sa imi permit asa ceva. A-ti fost binevoitori si saritori in acest caz, insa.... trebuie sa invat de unul singur. M-ati facut sa mai inteleg cate una alta, insa de aici incolo.... mai bine imi suflec manecile, o i-au de la capat. Se pare ca am nevoie de rabdare si sa nu ma mai gandesc deloc, la termenul limita. Va multumesc. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users