2016-08-24 4 views
-1

Ich mache gerade ein Projekt für mein Klassenprojekt. Ich versuche gerade, in die Datenbank zu aktualisieren, aber ich bekomme einige Fehler auf dem Weg im Grunde ist es ein Radio-Button zu Setup auf eine Update-Seite zu verknüpfen. Jede Hilfe und Einblicke wären willkommen!MySQL und PHP Update

<html> 
<head> 
<title>asdf</title> 
<link rel="stylesheet" type="text/css" href="Background.css"> 
</head> 
<?php 
session_start(); 
if(!isset($_SESSION["login"])) 
header("location:admin.php"); 
?> 

<body> 
<h1 style="color:white"><u><center></center></u></h1> 
<div id="BG"></div> 

<form action = "update1.php" method = "GET"> 
    <table border = 0> 
    <tr> 
     <td>Image: <input type = "text" name = "image" id = "image"></td> 
      <br/> 
     <td>Hero Name: <input type = "text" name = "heroes" id = "heroes"></td> 
      <br/> 
     <td>Role: <input type = "text" name = "roles" id = "roles"></td> 
      <br/> 
     <td>Attribute: <input type = "text" name = "attribute" id = "attribute"></td> 
      <br/> 
     <td>Description: <input type = "text" name = "description" id = "description"></td> 
      <br/> 
     <td>General: <input type = "text" name = "general" id = "general"></td> 
      <br/> 
    </tr> 
    </table> 
    </br> 
    <input type = "submit" name="update" value = "Update"> 
</form> 
</center> 
</html> 



<?php 
ini_set('display_errors', 1); ini_set('display_startup_errors', 1);  error_reporting(E_ALL); 
define("DB_USER","*****"); 
define("DB_PASSWORD","****"); 
define("DB_HOST","*****"); 
define("DB_NAME","*****"); 

$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); 
if(isset($_GET['update'])) 
{ 

    $image = $_GET['image']; 
    $heroes = $_GET['heroes']; 
    $roles = $_GET['roles']; 
    $attribute = $_GET['attribute']; 
    $description = $_GET['description']; 
    $general = $_GET['general']; 
    $sql = "update `Dota 2 select` set (`image` = '$image',`heroes` = '$heroes') WHERE (heroes= '$heroes', image = '$image')"; 
    // $sql = "Update `Dota 2 select` SET (`image`= [$image]) = WHERE `image`)"; 

// $sql = "Update `Dota 2 select` SET (`image`= [$image],`heroes` =[$heroes],`roles` =[$roles],`attribute`=[$attribute],`description`=[$description],`general`=[$general]) = WHERE `heroes`='$heroes')"; 
// $sql = "Update `Dota 2 select` SET (`image`= [$image],`heroes`,`roles`,`attribute`,`description`,`general`) = WHERE (`image`,`heroes`,`roles`,`attribute`,`description`,`general`) =  ('$image','$heroes','$roles','$attribute','$description','$general')"; 

     if(!mysqli_query($dbc, $sql)) 
     { 
echo(mysqli_error($dbc)); 
     } 
     else 
     { 
      echo 'Data successfully updated!'; 
     } 
     mysqli_close($dbc); 
    } 


?> 

Dies ist der Fehler für diese Seite " Sie haben einen Fehler in der SQL-Syntax, das Handbuch überprüfen, die für die richtige Syntax zu Ihrer MySQL-Server-Version entspricht in der Nähe zu verwenden‚(image = ‚a‘ , heroes = 'a') WHERE (Helden = 'a', Bild = 'a')‘in Zeile 1

"

+0

'A' =' a' hier. und Ihre Update-Syntax ist ungültig. –

+0

Tabellennamen dürfen keine Leerzeichen in ihren Namen enthalten. – Rahi

+0

@Rahi * "Tabellennamen dürfen keine Leerzeichen in ihren Namen enthalten" * - Oh, und warum nicht? Sie sind dem Tabellennamen entkommen. –

Antwort

0

Scheint Sie bekommen MySQL einfügen und aktualisieren Syntax gemischt ..

UPDATE `table` set `col1`='val1', `col2`='val2',.... 

, die, wenn sie als PHP var gesetzt aussehen könnte

$sql = 'UPDATE `table` set `col1`=\''. $val1.'\', `col2`=\''.$val2.'\',.... 

Mehr als nur ein Weg, das zu tun, aber das ist meine bevorzugte Art und Weise. Backticks um Spaltennamen und Apostroph um Werte, da ich hier einfache Anführungszeichenfolgen verwende

+0

Ich habe es versucht und es funktioniert nicht $ sql = "Update Dota 2 wähle SET image = '$ image' WHERE image =". $ Image; – RBram

0

Der Tabellenname hat ungültigen Platz!

"update Dota_2_select gesetzt image = $ image, Helden = $ Helden wo Helden = $ Helden, image = $ image";:

Sie können Ihre Anweisung nach

die Räume zwischen Tabellennamen entfernen und "anstelle von" verwenden, weil Sie de PHP-Variablen direkt $ anrufen

0

Ihre erste where ist falsch.

WHERE (heroes= '$heroes', image = '$image')"; 

sollte es sein

WHERE (heroes= '$heroes' AND image = '$image')"; 
         ^^^^ 

Sie sind auch anfällig für sql injection attacks

Ihre zweite schlägt fehl, weil Sie für die Existenz Ihres $_GET Wert testen NACH bereits Sie versucht, es zu benutzen:

if (isset($_GET['Heroes'])) { 
    $Heroes = $_GET['heroes']; 
    ... 
}