2017-06-09 2 views
1

Im becomming eines ganz hier regelmäßig ...Passing eine MySQL-Zeile innerhalb eines PHP/HTML-Formulars

ich eine Tabelle auszudrucken in PHP zu dynamicly versuchen je nachdem, was Ergebnisse mit einem MYSQL Statement zu finden sind.

Siehe unten Code, erhalte ich die folgenden Fehler

[Fr 9. Juni 18: 51: 32,478737 2017] [fcgid: warnen] [pid 63368] [client 5.69.190.95:64631] mod_fcgid: stderr: PHP Parse error: syntax error, unexpected 'showhistory' (T_STRING), expecting ',' or ';' in /home/tools/public_html/searchhistory.php on line 84, referer: http://tools.cidetech.co.uk/history.php

Es zu haben scheint ein Problem, nur mit den „Form“ Gebäuden im Innern der Schleife habe ich keine Probleme, bis dieser Linie nach oben -

echo " <td><form method="POST" action="showhistory.php"> 
                 <input type="hidden" name="id_director" value=".$row["id"]" 
                 </form></td> "; 

scheine ich kann nicht, wo ich falsch werde, um herauszufinden, das in nur reinem HTML gut funktionieren würde, aber es muss innerhalb des mysql/php Teils sein, wie ich pas muss s die Zeilen-ID innerhalb der Schaltfläche.

Um genau zu sein es ist dieser Teil des Codes ich mit

for ($i = 0; $i < count($idArray); $i++) 
     { 
         $sql="SELECT * FROM history WHERE id LIKE '%{$idArray[$i]}%'"; 
         $result=$con->query($sql); 

             while($row=$result->fetch_assoc()) 
             { 
               echo "<tr>"; 
               echo "<td><pre>".$row["id"]."</pre></td>"; 
               echo "<td><pre>".$row["date"]."</pre></td>"; 
               echo "<td><pre>".$row["domain"]."</pre></td>"; 
               echo " <td><form method="POST" action="showhistory.php"> 
                 <input type="hidden" name="id_director" value=".$row["id"]" 
                 </form></td> ";   
             } 
       } 
       echo "</table>"; 
       mysqli_close($conn); 

    ?> 

Der vollständige Code hier "statt" für die Zeichenfolge zu sehen ist

<DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    <link rel="stylesheet" type="text/css" href="stylesheet.css"> 
    <meta http-equiv="content-type" content="text/html; charset=windows-1250"> 
    <meta name="generator" content="PSPad editor, www.pspad.com"> 
    <title>CWCS Domain Checker Tool</title> 
</head> 
<body> 
    <div class="header"> 
    <a href="index.php"> 
    <img src="cwcs-logo.png"> 
    </a> 
</div> 
    <hr/> 
<div class="searchform"> 
<form action="searchhistory.php" method="post"> 
<label for="domain"> <input class="submit" type="text" name="domain" /> </label> 
<input class="submitbutton" type="submit" name="search" value="Search for Domain" /> 
    </form> 
</div> 
<?php 
#define connection info/variables needed 
$servername = "localhost"; 
$username = ""; 
$password = ""; 
$dbname = "domainhistory"; 
$domain = $_POST['domain']; 
$idArray = array(); 
#creates mysql connection 
$con=new mysqli($servername,$username,$password,$dbname); 
    if($con->connect_error) 
    { 
     echo 'Connection Faild: '.$con->connect_error; 
    } 
    else 
    { 
     $sql="SELECT * FROM history WHERE domain LIKE '%{$domain}%'"; 
     $result=$con->query($sql); 
     #Pushes the ID of the mysql row into an array 
     while($row=$result->fetch_assoc()) 
     { 
      array_push($idArray,$row["id"]); 
     } 
    } 
    mysqli_close($conn); 
?> 
<!---prints out the ID's stored in the array --> 
    <?php 
    $servername = "localhost"; 
    $username = ""; 
    $password = ""; 
    $dbname = "domainhistory"; 
    $con=new mysqli($servername,$username,$password,$dbname); 
    if($con->connect_error) 
    { 
     echo 'Connection Faild: '.$con->connect_error; 
    } 
    else 
    { 
    } 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<th> ID </th>"; 
    echo "<th> Domain</th>"; 
    echo "<th> Date </th>"; 
    echo "</tr>"; 

## - loops through the ID array, and then prints out the data relating to that ID. 
    for ($i = 0; $i < count($idArray); $i++) 
     { 
         $sql="SELECT * FROM history WHERE id LIKE '%{$idArray[$i]}%'"; 
         $result=$con->query($sql); 

             while($row=$result->fetch_assoc()) 
             { 
               echo "<tr>"; 
               echo "<td><pre>".$row["id"]."</pre></td>"; 
               echo "<td><pre>".$row["date"]."</pre></td>"; 
               echo "<td><pre>".$row["domain"]."</pre></td>"; 
               echo " <td><form method="POST" action="showhistory.php"> 
                 <input type="hidden" name="id_director" value=".$row["id"]" 
                 </form></td> ";   
             } 
       } 
       echo "</table>"; 
       mysqli_close($conn); 

    ?> 


</body> 
</html> 
+0

Ihr Code ist anfällig für [** SQL-Injection **] (https://en.wikipedia.org/wiki/SQL_injection) Angriffe: Sie sollten [** mysqli **] (http s: //secure.php.net/manual/de/mysqli.prepare.php) oder [** PDO **] (https://secure.php.net/manual/en/pdo.prepared-statements.php) vorbereitete Anweisungen mit gebundenen Parametern wie in [** dieser Beitrag **] beschrieben (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). –

+0

Es gibt keine INSERT-Anweisung in diesem Code? Ich verstehe das und der Beitrag, den Sie freigegeben haben, ist nur dann vunerable, wenn Sie in eine MYSQL-Tabelle einfügen? (Ich weiß, es ist off-Thema, aber wäre praktisch, um eine Klarstellung zu haben) – TheOne745665

+0

Nein, SQL-Injektion kann bei jeder Aussage auftreten. Beachten Sie, was Ihre Abfrage sein wird, wenn '$ domain' ist' '; DROP TABLE Geschichte - ' –

Antwort

0

Sie sollten verwenden werde kämpfen, um in php, weil Sie die "verwendet in der hTML-Markup und die" haben Sie verwenden für Echo.

+0

Es gibt viele "" herumfliegen, beziehen Sie sich auf die

(also die POST und showhistory) Teile? Wenn ja haben versucht, ich nur dies und erhalten (T_CONSTANT_ENCAPSED_STRING), erwartete Fehler – TheOne745665

+0

while ($ row = $ result-> fetch_assoc()) { echo ' "; echo ' ' $ row [" id“ ]. '; echo' '. $ Row ["Datum"]. " '; echo ''. $ Row ["Domäne"]. ' '; echo ' '; } So etwas wie das. Sie können die "für den HTML-Markup verwendet und 'für die Zitation der PHP-String für das Echo – jeremy

+0

Dies funktioniert und wurde der Fehler los, die Seite lädt jetzt aber ich kann nicht sehen, die Schaltfläche. Es sollte als der vierte angezeigt werden." Kollum. – TheOne745665

Verwandte Themen