webForumDet fria alternativet

Enkelt problem

PHP

10 svar · 358 visningar · startad av coolish

Medlem sedan sep. 200297 inlägg
Frågan#1

Hej.
Jag har en kodsnutt som ser ut enligt nedan. Jag får felmeddelande när jag försöker skriva till databasen, någon som kan hjälpa mig med felet?

Felmeddelandet ser ut så här:

Du har laddat upp filen driving_licens.jpg
Glöm inte att spara när du återvänder till sidan!
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades., SQL state 07001 in SQLExecDirect in c:\Inetpub\wwwroot\kapeadmin\insertImage.php on line 35

och koden jag använder:

if(isset($_POST['skicka'])) {
if(!($_FILES['fil']['name']==""||$_FILES['fil']['name']=="none")){
if(is_uploaded_file($_FILES['fil']['tmp_name'])){

	move_uploaded_file($\_FILES\['fil'\]\['tmp_name'\],"uploaded/".$\_FILES\['fil'\]\['name'\]);

	echo "\<font face='verdana' color='#ffffff' size='1'\>Du har laddat upp filen ".$\_FILES\['fil'\]\['name'\]."\</font\>\<br\>\<font face='verdana' color='#ffffff' size='2'\>\<b\>Glöm inte att spara när du återvänder till sidan!\</b\>\</font\>";
	// Här ska kod för databasen in
	$tmp_id = $\_REQUEST\['id'\];

	echo $tmp_id;
	
	$filnamn = $\_FILES\['fil'\]\['name'\];
	
	$conn_id=odbc_connect("sla","","") or
		die("Kunde inte spara till databasen");
		$sql = "Update StatusInfo Set image = ($filnamn) where id = ('$tmp_id')";
		$run = odbc_exec($conn_id,$sql);
		odbc_close($conn_id);
		}
	}
}
Medlem sedan juni 200032 967 inlägg
#2
  1. Använd [php]-taggar så din php-kod går att läsa i forumet.
  2. Du har apostrofer runt id-värdet i SQL-frågan, men inte runt filnamnet. Det ska nog vara tvärt om?
Medlem sedan sep. 200297 inlägg
#3

Om jag gör tvärt om med apostroferna får jag istället:
"Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'id = ()'., SQL state 37000 in SQLExecDirect in c:\Inetpub\wwwroot\kapeadmin\insertImage.php on line 36"

Jag kan däremot skriva ut tmp_id med echo $tmp_id;

Medlem sedan juni 200032 967 inlägg
#4

Så här borde det se ut:

$sql = "Update StatusInfo Set image = '$filnamn' where id = $tmp_id";

Skriv ut SQL-frågan med echo, så får vi se hur den ser ut.

Medlem sedan sep. 200297 inlägg
#5

echo $sql; ger följande:

Update StatusInfo Set image = 'support_2.gif' where id =

Jag får alltså inte med något id. Jag hämtar tmp_id med $tmp_id = $_REQUEST['id']; och jag kan skriva ut det högre upp på sidan.

Medlem sedan dec. 2004225 inlägg
#6

$_REQUEST?
Om du ska hämta från POST skriver du $_POST och om du ska hämta från adressfältet skriver du $_GET.

Aldrig sett $_REQUEST innan :q

Medlem sedan sep. 200297 inlägg
#7

Hämtar från en länk. Och jag kan ta med värdet in och skriva ut det högst upp men sen verkar det inte hänga med längre. Och jag får samma resultat oavsett om jag använder $_GET eller $_REQUEST.

Medlem sedan dec. 2004225 inlägg
#8

Hm, låt oss se hela koden igen.

Medlem sedan sep. 200297 inlägg
#9

<html>
<head>
<title>Ladda upp fil</title>
</head>
<body bgcolor="#666666">

<? php
$tmp_id = $_GET['id'];
		echo $tmp_id;

	if(isset($_POST['skicka'])) {
		if(!($_FILES['fil']['name']==""||$_FILES['fil']['name']=="none")){
			if(is_uploaded_file($_FILES['fil']['tmp_name'])){

		move_uploaded_file($_FILES['fil']['tmp_name'],"uploaded/".$_FILES['fil']['name']);

		echo "<font face='verdana' color='#ffffff' size='1'>Du har laddat upp filen ".$_FILES['fil']['name']."</font><br><font face='verdana' color='#ffffff' size='2'><b>Glöm inte att spara när du återvänder till sidan!</b></font>";
		// Här ska kod för databasen in
		
		
		$filnamn = $_FILES['fil']['name'];
						
		$conn_id=odbc_connect("sla","","") or
			die("Kunde inte spara till databasen");
			$sql = "Update StatusInfo Set image = '$filnamn' where id = $tmp_id";
			echo $sql;
			//echo $tmp_id;
			//$run = odbc_exec($conn_id,$sql);
			odbc_close($conn_id);
			}
		}
	}
?>

<form method="post" action="insertImage.php" enctype="multipart/form-data">
<table border="0" cellpadding="0" cellspacing="0">
<tr valign="top">
<td valign="top">
<font face="verdana" size="1" color="#ffffff"><b>Välj fil att ladda upp:</b></font>
<input type="file" name="fil"><br><br>
<input type="submit" name="skicka" value="Ladda upp"><hr noshade size="1"></td>
</tr>
</table>
</form>

</body>
</html>

Medlem sedan juni 200032 967 inlägg
#10

@nders skrev:

  1. Använd [php]-taggar så din php-kod går att läsa i forumet.
Medlem sedan sep. 200297 inlägg
#11

Problemet är löst, jag postade om sidan och tappade därmed värdet. Skickade med tmp_id i en <input type=hidden> och fick det att fungera.

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)