Kezdőoldal » Számítástechnika » Programozás » Mi a baj ezzel a php kóddal?

Mi a baj ezzel a php kóddal?

Figyelt kérdés

<?php


$servername = "localhost";

$username = "root";

$password = "P@ssw0rd";

$dbname = "mywebshop";


// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn->connect_error) {

die("Connection failed: ".$conn->connect_error);

}


session_start();


$idProduct = $_GET["idProduct"];

$idCustomer = $_SESSION['idCustomer'];


$sql = "INSERT INTO Order (idCustomer, idProduct)

VALUES ('$idCustomer', '$idProduct')";


mysqli_close($con);


header('Location: /guitars.php');


?>


A probléma: Nem adja hozzá az táblához az értékeket.


1. A kapcsolat jó, különben problémát jelezne ki.


2. A $idProduct és $idCustomer változó értéke is jól. A kód végéről a "header('Location: /guitars.php');"-t kitörölve echoval kiirattam az értékeket. Mindig megfelelőt adott. Plusz az $sql részre random számokat beírva sem rakott be semmilyen értéket sem.


Valószínűleg ezzel lehet a probléma:


$sql = "INSERT INTO Order (idCustomer, idProduct)

VALUES ('$idCustomer', '$idProduct')";


de nem értem, hogy mi ... mert ugyan ez az SQL kód működik a MySQLen belül és ott hozzá tudom adni az értékeket.



2018. jan. 17. 16:55
1 2
 1/16 anonim ***** válasza:
93%
Végre is kéne hajtani azt az sql parancsot, most csak beleraktad egy stringbe.
2018. jan. 17. 16:59
Hasznos számodra ez a válasz?
 2/16 A kérdező kommentje:

Hogyan lehetne megcsinálni?


kb 1,5 napja használom a phpt ... semmit sem tudok róla

2018. jan. 17. 17:05
 3/16 anonim ***** válasza:
100%

Használd a PHP doksit, különben óránként fogsz idejárni kérdésekkel és órákat várhatsz a válaszra.


[link]


mysqli_query($conn, $sql);

2018. jan. 17. 17:09
Hasznos számodra ez a válasz?
 4/16 A kérdező kommentje:

$sql = "INSERT INTO Order (idCustomer, idProduct)

VALUES ('$idCustomer', '$idProduct')";


mysqli_query($conn, $sql);


mysqli_close($conn);


header('Location: /guitars.php');


Így beraktam, de még mindig semmi sem történik :'(

2018. jan. 17. 17:12
 5/16 anonim ***** válasza:
100%

illetve ez hibás mert nincs $con változód: mysqli_close($con);

(lemaradt egy n betű)


Illetve nyilván ha kívülről érkező adatokkal dolgozol, akkor azokat szűrni kell ha publikus az oldal, $_GET, $_POST, $_SERVER mind veszélyforrás ha közvetlenül írod adatbázisba.

Majd ha ott tartasz, akkor erre egyszerű megoldás lesz prepared statementeket használni, vagy saját szűrőket írni ha pontosabban tudod milyen adat jöhet.

2018. jan. 17. 17:15
Hasznos számodra ez a válasz?
 6/16 A kérdező kommentje:

Oké ott lemaradt egy N betü, de ez nem befolyásolja ... csak nem zárja le a kapcsolatot.


Azt is kijavítottam, de még így sincs semmi.

2018. jan. 17. 17:20
 7/16 anonim ***** válasza:
100%

a mysqli_query helyett:


if(!mysqli_query($conn, $sql)){

echo "Hibakód: ".mysqli_errno($conn).", ".mysqli_error($conn);

}


Így lefut az IF feltételében lévő query, ha hamis értékkel tér vissza akkor a tagadás ( ! ) miatt igaz lesz, tehát belemegy az ifbe, és kiírja a hibakódot és annak magyarázatát.

2018. jan. 17. 17:21
Hasznos számodra ez a válasz?
 8/16 A kérdező kommentje:

<?php


$servername = "localhost";

$username = "root";

$password = "P@ssw0rd";

$dbname = "mywebshop";


// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn->connect_error) {

die("Connection failed: ".$conn->connect_error);

}


session_start();


$idProduct = $_GET["idProduct"];

$idCustomer = $_SESSION['idCustomer'];


$sql = "INSERT INTO Order (idCustomer, idProduct)

VALUES ('$idCustomer', '$idProduct')";


if ($conn->query($sql) === TRUE) {

echo "New record created successfully";

} else {

echo "Error: ".$sql."<br>".$conn->error;

}


?>


Most ezzel próbálkoztam meg ... amit a W3School ír.


Ezt a hibaüzenetet dobta ki:

Error: INSERT INTO Order (idCustomer, idProduct) VALUES ('1', '1')

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Order (idCustomer, idProduct) VALUES ('1', '1')' at line 1

2018. jan. 17. 17:24
 9/16 A kérdező kommentje:
Nem értem, mert ugyan ez az SQL kód működik a MySQL workbenchben és ott betudod adni értékeket..
2018. jan. 17. 17:27
 10/16 anonim ***** válasza:
100%

Ja igen, nekem sem tűnt fel :) az 'order' az alapból mysql kulcsszó a rendezésre. Tedd ` jelek közé ha olyan táblanevet használsz ami parancs is egyben. (altGr + 7)


INSERT INTO `Order` ...

2018. jan. 17. 17:27
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!