2016-07-07 9 views
-1

Also, ich versuche herauszufinden, wie dies das und es mich verblüfft. DIESES wird NICHT ONLINE LIVE SO SQL-INJEKTION, die ich nicht kümmern. Was mache ich falsch/richtig?UPDATE einzelne Spalte in der Datenbank: PHP & MySQL

BEARBEITEN: Markieren Sie für das Formular, ich nehme $ Kommentar von.

<!DOCTYPE html> 
<html lang="en"> 
<LINK href="stylesheet.css" rel="stylesheet" type="text/css"> 
<script src ="js/validateform.js"></script> 
<head> 
    <meta charset="UTF-8"> 

    <title>UniHelp Home</title> 

    </head> 

    <body> 
     <div id="headeruni"> 
      <h1>Welcome <?php echo $_GET["name"]; ?> to UniHelp!</h1> 
     </div> 

    <div id ="infouni"> 
     <h3>Welcome to UniHelp. The social Network getting you connected to other people all over the University for any help you require!</h3> 
    </div> 

    <div id ="nameandemail"> 
     <form action="formsend.php" method="post"> 
      First name: <br> <input type="text" name="name"><br> 
      Email: <br> <input type="text" name="email"><br> 
      Comment: <br> <input type="text" name="message"><br> 
      <input type="submit" name="submit"> 
     </form>`enter code here` 
     </div> 
    <div id="grabphpdiv"> 

     <?php 
     $db = mysql_connect("localhost", "root", "root"); 
     if (!$db) { 
      die("Database connect failed: " . mysql_error()); 
     } 

     $db_select = mysql_select_db("UNii", $db); 
     if (!$db_select) { 
      die("Database selection failed: " . mysql_error()); 
     } 
     $result = mysql_query("SELECT * FROM Dbsaved", $db); 
     if (!$result) { 
      die ("Database query failed: " . mysql_error()); 
     } 

    $comment = $_POST['$comment']; 

     while ($row = mysql_fetch_array($result)) { 
      echo "<div id='posts'>";; 
      echo "<h2>"; 
      echo $row[1] . ""; 
      echo "</h2>"; 
      echo "<p>"; 
      //echo $timestamp = date('d-m-y G:i:s '); 
      echo "<br>"; 
      echo "<br>"; 
      echo $row[2] . ""; 
      echo "</p>"; 
      echo "<p>"; 
      echo $row[3] . ""; 
      echo "</p>"; 
      echo '<a href=delete.php?id=' . $row[0]. '">Delete</a>'; 
      echo "<br>"; 
      echo "<br>"; 
      echo 'Comment: <br> 
          <input type=text name=comment><br> 
          <a href=addcomment.php?id=' . $row[0]. '&comment='. $row['$comment'].'>Comment</a>'; 
      echo "<p>"; 
      echo $row['comment'] . ""; 
      echo "</p>"; 
      echo "</div>"; 
      echo "<br>"; 
     } 
     ?> 
     </div> 
</body> 

<div id="footer">Copyright &copy James Taylor 2016</div> 
</html> 
+1

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

+2

*** Bitte [stoppen Sie die Verwendung von mysql_ * 'Funktionen] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). *** [Diese Erweiterungen ] (http://php.net/manual/en/migration70.removed-exts-sapis.php) wurden in PHP 7 entfernt. Erfahren Sie mehr über [prepared] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) und [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared- Statements.php) und erwäge die Verwendung von PDO, [es ist wirklich ziemlich einfach] (http://jayblanchard.net/demystifying_php_pdo.html). –

+1

Ich hasse es, wenn Leute sagen * "Ich bin nicht so weit weg ..." * oder * "Diese Seite wird nicht öffentlich sein ..." * oder * "Es ist nur für die Schule, also ist Sicherheit egal ... . "*. Wenn Lehrer und Professoren nicht vom ersten Tag an über Sicherheit reden, machen sie es falsch. Fordere sie heraus. Sie lehren schlampige und gefährliche Programmierpraktiken, die Schüler später verlernen müssen. Ich hasse es auch, wenn Leute sagen, * "Ich werde später Sicherheit hinzufügen ..." * oder * "Sicherheit ist jetzt nicht wichtig ..." *. Wenn Sie beim ersten Mal keine Zeit haben, es richtig zu machen, wann finden Sie die Zeit, es später hinzuzufügen? –

Antwort

0

Ich lief gerade diesen Code:

$comment = "Hello World!"; 
$id = 1; 
$sql = "UPDATE Dbsaved SET comment = '{$comment}' WHERE id = {$id}"; 
echo $sql; 

und sah:

UPDATE Dbsaved SET comment = 'Hello World!' WHERE id = 1 

, die eine korrekte SQL-Anweisung ist, so dass, wenn es nicht funktioniert, könnten Sie mit spielen wollen SQL direkt, um etwas zum Laufen zu bringen. Ich hoffe, das hilft!

+0

Da die ID eine ganze Zahl ist, möchten Sie sie vielleicht nicht zitieren. Es würde auf der Grundlage von Kommentaren erscheinen, dass das OP zum Beispiel das falsche Anforderungs-Array verwendet. Schlechter Abstand für zwei. und einige andere Artikel ... –

+1

@JayBlanchard Yup, Code geändert, danke! – Katie

+0

Danke! Das Problem ist, dass sich die ID immer ändert. –

0

LÖSUNG:

$comment = $_GET['$comment']; 
$id = $_GET['$id']; 

     while ($row = mysql_fetch_array($result)) { 
      echo "<div id='posts'>";; 
      echo "<h2>"; 
      echo $row[1] . ""; 
      echo "</h2>"; 
      echo "<p>"; 
      //echo $timestamp = date('d-m-y G:i:s '); 
      echo "<br>"; 
      echo "<br>"; 
      echo $row[2] . ""; 
      echo "</p>"; 
      echo "<p>"; 
      echo $row[3] . ""; 
      echo "</p>"; 
      echo '<a href=delete.php?id=' . $row[0]. '">Delete</a>'; 
      echo "<br>"; 
      echo "<br>"; 
      echo $row[4] . ""; 
      echo "<br>"; 
      echo 'Comment: <br> 
          <form action="addcomment.php?id=' . $row[0]. '" method="post"> 
          <input type=text name=comment><br> 
          <input type=submit name="submit"> 
          </form>'; 
      echo "<p>"; 
      echo $row['comment'] . ""; 
      echo "</p>"; 
      echo "</div>"; 
      echo "<br>"; 
     } 
     ?> 

und:

<?php 
     $db = mysql_connect("localhost", "root", "root"); 
     if (!$db) { 
      die("Database connect failed: " . mysql_error()); 
     } 

     $db_select = mysql_select_db("UNii", $db); 
     if (!$db_select) { 
      die("Database selection failed: " . mysql_error()); 
     } 

    $comment = $_POST['comment']; 
    $id = $_GET['id']; 

     $sql = "UPDATE Dbsaved SET comment = '$comment' WHERE id = $id "; 

     $comment1 = mysql_query($sql); 

    echo $sql; 

      if (!$comment1) { 
       die("did not save comment: " . mysql_error()); 
      } 
    else { 
    header("location: UniHelpindex.php"); 
    } 

Es war mit vor allem zu tun, um die id zu erhalten, die in $row[0]' in der Form, in der while-Schleife erstellt verwendet wurde. Und tatsächlich die richtige Syntax für das Bit update Dbsaved... verwenden.

Verwandte Themen