Pereiti prie turinio

Paieškokime klaidelės !


Rekomenduojami pranešimai

Štai php kodukas:

 

<?php
include "mysql.php";
echo '<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">';


$preke = $_POST['preke'];
$kiekis = $_POST['kiekis'];

$komanda = "'INSERT INTO prekes (kiekis) 
VALUES ($kiekis) WHERE 'pavadinimas' = $preke'";
if ($kiekis > 99 or $kiekis < -99)
{
	echo "<html><head><title>Ivyko Klaida!</title></head>
	<body>
	<script src='http://code.jquery.com/jquery.js'></script>
	<script src='js/bootstrap.min.js'></script>
	<center>
	<div class='alert'>
		<button type='button' class='close' data-dismiss='alert'>×</button>
		<strong>Klaida!</strong> Vienos operacijos metu galite prideti/atimti iki 99 vienetu
	</div></center>
	<br>
	<br>
	<center><button class='btn btn-large btn-primary'><a href='index.php'>Atgal</a></button></center> </body>
	</html>";

}

else 
	{
		echo $kiekis;
		echo " ";
		echo $preke;
		mysql_query($komanda,$con) or die (mysql_error());
		echo "<html><head><title>Atlikta!</title></head>
				<body><center><br><span class='label label-success'><h5>Sekmingai atlikta!</h5></span>
					  <br><br><button type='button' class='btn btn-large btn-primary'><a href='index.php'>Atgal</a></button></center></body></html>";

	}



mysql_close($con);


?>

 

Output'as :

 

1 verbatimYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''INSERT INTO prekes (kiekis) VALUES (1) WHERE 'pavadinimas' = verbatim'' at line 1

 

Niekaip nerandu klaidelės, gal tiesiog galva nedirba, padėsit ? :)

Redagavo DaDyZaZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

$komanda = "'INSERT INTO prekes (kiekis) 
VALUES ($kiekis) WHERE 'pavadinimas' = '$preke'";

 

3 verbatimYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''INSERT INTO prekes (kiekis) VALUES (3) WHERE 'pavadinimas' = 'verbatim'' at line 1

 

Bandom dar ieškoti :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

$komanda = "'INSERT INTO prekes (kiekis) 
VALUES ($kiekis) WHERE 'pavadinimas' = '$preke'";

 

3 verbatimYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''INSERT INTO prekes (kiekis) VALUES (3) WHERE 'pavadinimas' = 'verbatim'' at line 1

 

Bandom dar ieškoti :)

 

taska pamirsai prie kintamojo

Nuoroda į pranešimą
Dalintis kituose puslapiuose

$komanda = mysql_query("INSERT INTO prekes (kiekis) VALUES " . $kiekis " WHERE pavadinimas = " . $preke);

 

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\webserv\8.5\root\tii10\submit.php on line 9

 

$komanda = "INSERT INTO prekes (kiekis) VALUES ('$kiekis') WHERE pavadinimas = '$preke'";

 

4 verbatimYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `pavadinimas` = 'verbatim'' at line 2

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\webserv\8.5\root\tii10\submit.php on line 9

 

 

 

4 verbatimYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `pavadinimas` = 'verbatim'' at line 2

 

zdz tingiu gilintis, kazka praleidziu :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Negalima naudot ' kabučių ant skilčių(columns, "pavadinimas") reiktų `

 

O ` kabutes patarčiau naudot nes būna skilčių tokių kaip SQL funkcijos pvz. count tai meta errorą tada.

 

Mano variantas:

Įrašymas:

$komanda = 'INSERT INTO `prekes` (`kiekis`) VALUES ("'.$kiekis.'");

Atnaujinimas:

$komanda = 'UPDATE `prekes` SET `kiekis` = "'.$kiekis.'" WHERE `pavadinimas` = "'.$preke.'"';

 

Šiaip matau nestripini nieko ir pan. tai SQL injection nesunku padaryt. O geriausia naudok PDO

Redagavo TomasAchmedovas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Negalima naudot ' kabučių ant skilčių(columns, "pavadinimas") reiktų `

 

O ` kabutes patarčiau naudot nes būna skilčių tokių kaip SQL funkcijos pvz. count tai meta errorą tada.

 

Mano variantas:

Įrašymas:

$komanda = 'INSERT INTO `prekes` (`kiekis`) VALUES ("'.$kiekis.'");

Atnaujinimas:

$komanda = 'UPDATE `prekes` SET `kiekis` = "'.$kiekis.'" WHERE `pavadinimas` = "'.$preke.'"';

 

Šiaip matau nestripini nieko ir pan. tai SQL injection nesunku padaryt. O geriausia naudok PDO

 

Pirmame kode nera nurodyta kokiai prekei kiekis didinamas/mazinamas. (Sukure nauja eilute be prekes pavadinimo)

 

Antras kodas, kuris atnaujina, veikia puikiai, bet man siuo atveju reikia insert o ne update.

Redagavo DaDyZaZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirmame kode nera nurodyta kokiai prekei kiekis didinamas/mazinamas. (Sukure nauja eilute be prekes pavadinimo)

 

Antras kodas, kuris atnaujina, veikia puikiai, bet man siuo atveju reikia insert o ne update.

Kaip tu gali pridėt eilutę su WHERE? INSERT niekada nebūna su WHERE

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirmame kode nera nurodyta kokiai prekei kiekis didinamas/mazinamas. (Sukure nauja eilute be prekes pavadinimo)

 

Antras kodas, kuris atnaujina, veikia puikiai, bet man siuo atveju reikia insert o ne update.

 

$search = mysql_query('SELECT `pavadinimas` FROM `prekes` WHERE `pavadinimas` = "'.$preke.'"', $con);

if (mysql_num_rows($search) > 0) { // Iesko ar yra toks irasas su tokiu pavadinimu
   $komanda = 'UPDATE `prekes` SET `kiekis` = "'.$kiekis.'" WHERE `pavadinimas` = "'.$preke.'"'; // Jei yra - atnaujina
}
else {
   $komanda = 'INSERT INTO `prekes` (`kiekis`) VALUES ("'.$kiekis.'"); // Jei nera - iraso.
}

 

Pakeisk sita su ta $komanda = ... eilute.

Redagavo TomasAchmedovas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

DaDyZaZ, dar patarčiau kokių nors apsaugėlių naudoti,

$preke = $_POST['preke'];
$kiekis = $_POST['kiekis'];

nes žiūrint į kodą, jei apsaugų nera paslėpta mysql.php faile, tada kaip ir pažeidžiamas truputi esi :D

 

 

$preke = mysql_real_escape_string($_POST['preke']);
$kiekis = mysql_real_escape_string($_POST['kiekis']);

Redagavo n3on4s
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Truputi klaidą padarei rašydamas ;) O jai rimtai, tau jau manau pats laikas pamiršti MySQL ir naudoti MySQLi arba PDO. Tik žinoma tai neapsaugos nuo klaidingų duomenų įvedimo, jai nebus kokios nors "validacijos", na bent jau nuo MySQL injekcijos turėtų, nors kaip sakoma gyvenime visko būna... :D

$preke = $_POSTmysql_real_escape_string(['preke']);
$kiekis = mysql_real_escape_string($_POST['kiekis']);

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...