Errore in modifica record ...

Allora sto relizzando un piccolo cms per il mio sito per cui sto tentando di far modificare automaticamente dei record che inserisco all'interno del mio db, purtroppo però ci sono dei problemi nella sintassi dell'sql che proprio non riesco a risolvere l'errore è questo qui.

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 ' download =NULL WHERE `id`=15' at line 1

Mentre il source è questo;

<?php
@require_once('config.php');

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["update"])) && ($_POST["update"] == "modifica")) {
   $update = sprintf("UPDATE `rpg2s_downloads` SET `titolo`=%s, `desc`=%s, download =%s WHERE `id`=%s",
                       GetSQLValueString($_POST['titolo'], "varchar"),
                       GetSQLValueString($_POST['desc'], "varchar"),
                       GetSQLValueString($_POST['download'], "text"),
                       GetSQLValueString($_POST['id'], "int"));


  $Result1 = mysql_query($update) or die(mysql_error());

  $updateGoTo = "admin_view.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

$colonna_mod = "1";
if (isset($_GET['id'])) {
  $colonna_mod = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}

$query_mod = sprintf("SELECT * FROM `rpg2s_downloads` WHERE `id` = %s", $colonna_mod);
$system_modifica = mysql_query($query_mod) or die(mysql_error());
$row_mod = mysql_fetch_assoc($system_modifica);
$row_mod_etc = mysql_num_rows($system_modifica);
?>

La parte in html per l'invio dei dati invece è questa:

Modifica Download<br />
<form action="<?php echo $editFormAction; ?>" method="post" name="modifica" id="modifica">
Titolo:<br />
<input name="titolo" type="text" id="titolo" value="<?php echo $row_mod['titolo']; ?>" size="50" /><br />
Descrizione:<br />
<input name="desc" type="text" id="desc" value="<?php echo $row_mod['desc']; ?>" size="50" /><br />
Download:<br />
<input name="title" type="text" id="title" value="<?php echo $row_mod['download']; ?>" size="50" /><br />
<br />
<input type="submit" name="Submit" value="Invia" />
<input type="reset" name="Submit2" value="Ripristina" />
<input name="id" type="hidden" id="id" value="<?php echo $row_mod['id']; ?>" />
<input type="hidden" name="update" value="modifica" />
</form>
inviato 9 anni fa
DaD
DaD
1
X 0 X

gli `puoi anche toglierli, potresti postare la query completa che viene eseguita?

risposto 9 anni fa
Xscratch
X 0 X
gli `puoi anche toglierli, potresti postare la query completa che viene eseguita?

Li ho messi perchè poco tempo fa uno script non mi funzionava proprio per via dell'assenza di quei char.

Comunque in che senso la query completa?

risposto 9 anni fa
DaD
DaD
1
X 0 X

il valore della variabile $update dopo questa riga:

   $update = sprintf("UPDATE `rpg2s_downloads` SET `titolo`=%s, `desc`=%s, download =%s WHERE `id`=%s",
                       GetSQLValueString($_POST['titolo'], "varchar"),
                       GetSQLValueString($_POST['desc'], "varchar"),
                       GetSQLValueString($_POST['download'], "text"),
                       GetSQLValueString($_POST['id'], "int"));
risposto 9 anni fa
Xscratch
X 0 X

E' quella che eseguo o meglio cerco di eseguire ...

risposto 9 anni fa
DaD
DaD
1
X 0 X

si, ma prova a scriverla quì sul forum completa, per vedere se anche l'output della funzione getsqlvalue è corretto...

in ogni caso io sotituirei

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

con

$theValue = ($theValue != "") ? '"' . $theValue . '"' : "NULL";

tu hai messo:

doublequote apostrofo doublequote

io invece metterei:

apostrofo doublequote apostrofo

risposto 9 anni fa
Xscratch
X 0 X

prima della riga mysql_query metti una

echo $update;

così possiamo vedere la query che stai cercando di eseguire

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si, ma prova a scriverla quì sul forum completa, per vedere se anche l'output della funzione getsqlvalue è corretto...

in ogni caso io sotituirei

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

con

$theValue = ($theValue != "") ? '"' . $theValue . '"' : "NULL";

tu hai messo:

doublequote apostrofo doublequote

io invece metterei:

apostrofo doublequote apostrofo

Si effetivamente in questo modo è meglio, grazie del consiglio.

@Gianni la query restituita è questa:

UPDATE `rpg2s_downloads` SET `titolo`=a, `desc`=a.rar, download =NULL WHERE `id`=15Unknown column 'a' in 'field list'

Non riesco a capire... cioè dice che l'id 15 non esiste? e che a non è inserito nella tabella?

risposto 9 anni fa
DaD
DaD
1
X 0 X

primo errore:

`titolo`=a     -> mancano i quotes

secondo:

desc`=a.rar   -> mancano i quotes

controlla la funzione di formattazione query

buon weekend a tutti

 :bye:

risposto 9 anni fa
Xscratch
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda