Hallo,

voor een project dien ik enkel gegevens in de datbase op te slaan die uit een formulier komen. Mijn controle etc werkt allemaal maar vanaf dat mijn script aan de mysqli_query komt gebeurt er niets meer en ik zie niet waar mijn fout zit.
Mijn kolommen in de betreffende tabel: PK_fotoID, FK_UserID, foto, seisoon.
De user is nog even hard coded omdat mijn login en registratie systeem nog niet geschreven is.

Als ik iets niet invul krijg ik mooi mijn foutmeldingen. Maar als ik alles correct invul krijg ik enkel mijn var_dump's te zien en voor de rest krijg ik een witte pagina, als ik in mijn database ga kijken is er ook niets bijgekomen.

mijn code die ik aan het schrijven ben (momenteel nog buiten mijn applicatie om het deftig te kunnen testen en vooral begrijpen omdaar na prober te implementeren).


<?php
	$connect = new mysqli('localhost', 'root', 'root', 'ioutfit');
	if(isset($_POST['send'])) {
		var_dump($_FILES['myfile']);
		var_dump($_POST);
		//echo 'the form has been submitted';
		if($_FILES['myfile']['size'] == 0) {
			//geen bestand geselecteerd
			echo "Gelieve een foto te selecteren";
		}
		if($_POST['seisoon'] == null) {
			echo "gelieve een seisoon in te vullen";
		}
		else {
			$file = file_get_contents($_FILES['myfile']['tmp_name']);
			$seisoon = $_POST['seisoon'];
			$seisoon = strtolower($seisoon);
			$user = 1;
			if($seisoon == "winter" || $seisoon == "lente" || $seisoon == "zomer" || $seisoon == "herfst") {
				//echo 'check!';
				$query = "INSET INTO tblFotos (PK_userID, foto, seisoon) VALUES (" . $user . "," . $file. "," . $seisoon . ")";
				$result = mysqli_query($connect, $query);
				if(!$result) {
					die("Database query faild : " + mysqli_error($connect));
				}
				else {echo 'success';}
			}
			else {
				echo 'gelieve een geldig seisoon in te vullen';
			}
		}
	}
?>
<form method="post" action="input-test.php" id="upload-form" name="upload-form" enctype="multipart/form-data">
<input id="myfile" name="myfile" type="file" accept="image/*;capture=camera">
<input id="seisoon" name="seisoon" type="text" />
<input type="submit" name="send" id="send" value="send" />
</form>
Komt misschien lullig over, maar ik denk dat je serieus naar je spelling moet gaan kijken. Dan heb ik het niet over 'seisoon' (bedenk de namen die je wilt), maar wel over 'INSET' in plaats van 'INSERT'.
Verder missen ook de quotes in je query, om elke string waarde die je in wilt voeren dienen quotes te staan, net als om strings in php.
Erwin, foutje van mij die INSET had ik geschreven om een error uit te lokken omdat ik een blank scherm kreeg en ben dit vergeten terug aan te passen toen ik het hier poste. Dus dit was met opzet gedaan.
Ik heb reeds overal al met quotes proberen te werken maar dit was ook tevergeefs.

[size=xsmall]Toevoeging op 28/12/2013 12:52:04:[/size]

EDIT:
ik had bij mijn error check een + (javascript) ipv een . (php) staan.

Nu krijg ik onderstaande error:
Database query faild : 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 '±ïÑ­¼§&µœ&¨4AÔI𑠁c¨3H`v’Éä>kíÙ;3™=“™’ß‚' at line 1

[size=xsmall]Toevoeging op 28/12/2013 12:54:28:[/size]

EDIT2:
kleinere foto geeft deze error: MySQL server has gone away

[size=xsmall]Toevoeging op 28/12/2013 13:04:38:[/size]

EDIT3:

code:
<?php
$query = "INSERT INTO tblFotos (PK_userID, foto, seisoon) VALUES ('" . $user . "','" . $file. "','" . $seisoon . "')";
				$result = mysqli_query($connect, $query);
				if(!$result) {
					die("Database query faild : " . mysqli_error($connect));
				}
				else {echo 'success';}
?>
Je moet de variabelen die je insert escapen, ook de foto.
Het probleem zatem blijkbaar in het feit dat ik mijn $file nog moest decode met base64 om het in mijn blob in de database te krijgen.
Nu werkt mijn script wel op mijn local server maar van zodra ik deze op mijn webserver zet plaatst hij mijn $file in de betrefende kolom maar is deze leeg?
Iemand enig idee hoe dit kan komen?


<?php
	$connect = new mysqli('localhost', 'root', 'root', 'ioutfit');
	if(isset($_POST['send'])) {
		var_dump($_FILES['myfile']);
		var_dump($_POST);
		//echo 'the form has been submitted';
		if($_FILES['myfile']['size'] == 0) {
			//geen bestand geselecteerd
			echo "Gelieve een foto te selecteren";
		}
		if($_POST['seisoon'] == null) {
			echo "gelieve een seisoon in te vullen";
		}
		else {
			$file = file_get_contents($_FILES['myfile']['tmp_name']);
			$file = base64_decode($file);
			$seisoon = $_POST['seisoon'];
			$seisoon = strtolower($seisoon);
			$user = 1;
			if($seisoon == "winter" || $seisoon == "lente" || $seisoon == "zomer" || $seisoon == "herfst") {
				//echo 'check!';
				//mysql_ping($connect);
				$query = "INSERT INTO tblFotos (FK_userID, foto, seisoon) VALUES (" . $user . ",'" . $file. "','" . $seisoon . "')";
				$result = mysqli_query($connect, $query);
				echo $file;
				if(!$result) {
					die("Database query faild : " . mysqli_error($connect));
				}
				else {echo 'success';}
			}
			else {
				echo 'gelieve een geldig seisoon in te vullen';
			}
		}
	}
?>
<form method="post" action="input-test.php" id="upload-form" name="upload-form" enctype="multipart/form-data">
<input id="myfile" name="myfile" type="file" accept="image/*;capture=camera">
<input id="seisoon" name="seisoon" type="text" />
<input type="submit" name="send" id="send" value="send" />
</form>


[size=xsmall]Toevoeging op 28/12/2013 17:13:23:[/size]

EDIT
HEt probleem dat ik net beschreven heb blijkt zich enkel voor te doen als ik via mijn gsm een foto trek en wil uploaden.
Maar je gaat toch geen foto wegschrijven in een database?
Je upload de foto en schrijft het pad/de naam weg in de database.
I know maar mijn deadline voor school zit te dicht bij om de hele applicatie nog om te gooien dus ik moet het zo werkend krijgen. Als ik er later nog iets mee wil gaan doen moet ik dit inderdaad nog aanpassen. Maar voor nu moet het dus zo werken.
Mijn vraag blijft: waarom werkt dit op computer wel maar mobiel niet? Ik kan via mijn iphone mooi een foto trekken of selecteren, deze voegt hij dan ook toe aan het formulier als ik het verzend krijg ik mooi mijn var_dump van die file te zien maar in de database is deze ingevuld maar LEEG dus 0 bytes groot. Hoe komt dit?

Reageren