2016-07-07 2 views
-1

Итак, я пытаюсь выяснить, как это происходит, и это ошеломило меня. ЭТО НЕ БУДЕТ ИСПОЛЬЗУЕТСЯ ОНЛАЙН ЖИВОЙ ТАК ИНТЕЛЛЕКТУАЛЬНОЙ ИНТЕЛЛЕКТУАЛЬНОЙ СОБЫТИЙ, КОТОРЫЙ НЕ БУДЕТ ОБРАТИТЬСЯ. Что я делаю неправильно/правильно?UPDATE один столбец в базе данных: PHP & MYSQL

<?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 = $_GET['comment']; 
    $id = $_GET['id']; 

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

     $comment1 = mysql_query($sql); 

      if (!$comment1) { 
       die("did not save comment: " . mysql_error()); 
      } 

    echo $sql; 

The main problem is with the statement itself, the connection is fine. I am trying to read $comment, and then update that into a MYSQL table and then have it read back in a different file. 

EDIT: Отметьте форму, на которую я беру комментарий.

<!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/) говорит, что *** [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how- может-я-предотвращать-SQL-инъекции-в-PHP) ***. Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! –

+2

*** Пожалуйста, прекратите использование 'mysql_ *' функций (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). *** [Эти расширения ] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http://en.wikipedia.org/wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared- statements.php) и подумайте об использовании PDO, [это действительно довольно легко] (http://jayblanchard.net/demystifying_php_pdo.html). –

+1

Ненавижу, когда люди говорят * «Я не так далеко ...» * или * «Этот сайт не будет публичным ...» * или * «Это только для школы, поэтому безопасность не имеет значения. . "*. Если учителя и профессора не говорят о безопасности с первого дня, они делают это неправильно. Бросьте вызов им. Они учат неаккуратным и опасным методам кодирования, которые ученикам придется отучить позже. Я также ненавижу это, когда люди говорят: «Я добавлю безопасность позже ...» * или * «Теперь безопасность не важна ...» *. Если у вас нет времени сделать это правильно в первый раз, когда вы найдете время, чтобы добавить его позже? –

ответ

0

Я просто побежал этот код:

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

и увидел:

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

который является правильное заявление SQL, так что если он не работает, вы можете играть с SQL, чтобы получить что-то работающее. Надеюсь, это поможет!

+0

Поскольку идентификатор является целым числом, вы можете не указывать его. По-видимому, на основе комментариев OP использует неправильный массив запросов для одного. Плохой интервал для двоих. и некоторые другие предметы ... –

+1

@JayBlanchard Yup, измененный код, спасибо! – Katie

+0

Спасибо! Проблема в том, что идентификатор всегда будет меняться. –

0

РЕШЕНИЕ:

$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>"; 
     } 
     ?> 

и:

<?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"); 
    } 

Это было связано с главным нуждаясь, чтобы получить id, который был использован в $row[0]' в форме, созданной в то время цикла. И фактически, используя правильный синтаксис для бит update Dbsaved....

Смежные вопросы