Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Renault Android

Recomandare bicicleta e-bike 20&#...

Bing-Content removal tool

Nu pot accesa monitorulsv.ro de l...
 Cum sa elimini urmele de acnee?

Wc Geberit

Routere detinute in trecut si in ...

Teii din fața casei
 E-Mail in serie prin Excel si Out...

Modul alimentare rulou/jaluzea ex...

Recuperare fișiere dupa form...

Aplicatii stress test RAM
 Asigurare auto hibrid

Asus B550M - PC-ul nu porneste di...

Tzanca Uraganu - Inconjurat de Fe...

explicatie montaj breadboard
 

Fatal error: Call to a member function bind_param() on boolean

- - - - -
  • Please log in to reply
17 replies to this topic

#1
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016
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
Alphatech

Alphatech

    Junior Member

  • Grup: Junior Members
  • Posts: 27
  • Înscris: 13.01.2016
Verifica raspunsul de la db_prepare

if( ! $insert = $db->prepare( .... ) ) {
  echo 'Error: ' . $db->error;
  die();
} else {
  // restul codului.....
}

Vezi ce eroare ai acolo.

#3
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016

 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>&nbsp;&nbsp;&nbsp;&nbsp;<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! :D

Multumesc.

Edited by dellenovo, 17 January 2016 - 14:22.


#4
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
pune si tu parantezele corect la if ul ala

#5
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016

 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
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
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
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016

 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:
Attached File  Untitled.png   21.94K   8 downloadsAttached File  Untitled.png   32.91K   8 downloads

Edited by dellenovo, 17 January 2016 - 20:31.


#8
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
Ce server web folosesti ?

#9
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016
Pachetul XAMPP.... Daca doresti alte detalii, pot sa caut sa vad ce versiune de Apache foloseste!

Attached File  Untitled.png   235.52K   5 downloads

#10
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016
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
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
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
Alphatech

Alphatech

    Junior Member

  • Grup: Junior Members
  • Posts: 27
  • Înscris: 13.01.2016
Poti sa atasezi tot codul la topic. Pot sa te ajut si eu.

#13
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016

 yonut_a, on 19 ianuarie 2016 - 07:38, said:

da, codul complet ar fi util, o sa arunc o privire cand voi avea timp

 Alphatech, on 19 ianuarie 2016 - 07:45, said:

Poti sa atasezi tot codul la topic. Pot sa te ajut si eu.

Aici este tot. In aceasta mica arhiva. Va multumesc.

Attached Files



#14
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
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
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016
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. :D

#16
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016
Ceva, tot nu fac bine. Cred ca ma las pagubas. :D

#17
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
Nasol ... de ce sa te lasi pagubas in loc sa faci debug ?

#18
dellenovo

dellenovo

    New Member

  • Grup: Junior Members
  • Posts: 18
  • Înscris: 16.01.2016

 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. :D
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate