2016-03-19 12 views
0

Also, jedes Mal, wenn ich gehe http://localhost/api/calls.php?gamename=test&gameowner=hi&gameownerid=1&placeid=2&serverjobid=hi&serverid=jaja&serverplayers=1&sendername=bob&senderid=3&senderage=14&senderwarnings=0&calltype=non&reportinfo=hi&suspect=noneWarum wird das nicht an meinen mysql Server gesendet?

es zeigt absolut nichts und sendet nicht die Daten an meine MySQL-Datenbank.

Hier ist mein Code. Ich habe meine MySQL-Informationen entfernt, um sicher zu gehen.

<?php 
$servername = ""; 
$username = ""; 
$password = ""; 
$database = ""; 

// Establish MySQL Connection 
$conn = new mysqli($servername, $username, $password, $database); 

// Check connection 
if ($conn->connect_error) { 
    die("MySafeServer Database Connection Failed: " . $conn->connect_error); 
} 

if (array_key_exists('param',$_GET)) { 
    $gamename = $_GET['param']; 
    $gameowner = $_GET['param']; 
    $gameownerid = $_GET['param']; 
    $placeid = $_GET['param']; 
    $serverjobid = $_GET['param']; 
    $serverid = $_GET['param']; 
    $serverplayers = $_GET['param']; 
    $sendername = $_GET['param']; 
    $senderid = $_GET['param']; 
    $senderage = $_GET['param']; 
    $senderwarnings = $_GET['param']; 
    $calltype = $_GET['param']; 
    $reportinfo = $_GET['param']; 
    $suspect = $_GET['suspect']; 
    mysql_query("INSERT INTO mss_calls3 (gamename, gameowner, gameownerid, placeid, serverjobid, serverid, serverplayers, sendername, senderid, senderage, senderwarnings, calltype, reportinfo, suspect) VALUES ($gamename, $gameowner, $gameownerid, $placeid, $serverjobid, $serverid, $serverplayers, $sendername, $senderid, $senderage, $senderwarnings, $calltype, $reportinfo, $suspect)"); 
}; 
?> 
+1

Spielen Sie nicht Pick-a-mix mit mysql und mysqli ..... wählen Sie die eine Schnittstelle (mysqli) und bleibe dabei –

+0

Was meinst du? –

+0

Denken Sie daran, dass bei Erfolg oder fehlgeschlagenem Code nur etwas ausgegeben wird, wenn die Verbindung fehlschlägt - Sie können nichts darüber sagen, ob Ihre Anfrage erfolgreich war oder nicht. – andrewsi

Antwort

0

@Mark ist richtig, Sie sollten nur die mysqli-Funktionen verwenden.

Da @andrewsi sagt, da Sie keine Daten abfragen, gibt es nichts in Ihrem Code, der druckt, ob die Insert-Anweisung ein Erfolg ist, aber nur bei einem Fehler, so fügte ich ein "Erfolg!" Echo. Sie möchten dennoch die Datenbank abfragen, um zu sehen, ob die Werte eingefügt wurden.

@Matt und @ Marks Punkte zum Vorbereiten von Anweisungen sind entscheidend für die Bereinigung Ihrer Eingaben - das ist Sicherheit 101, und Sie sollten etwas googeln.

Aber letztendlich glaube ich, @CodeGodie schlug auf Ihr größtes Problem, nur um es zum Laufen zu bringen. Sie weisen alle Ihre Variablen auf den gleichen Wert mit $_GET['param'] mit Ausnahme von "Verdächtigen" am Ende. Und von dem Link, den Sie in der Frage gepostet haben, gibt es keinen "param" in Ihrer Abfragezeichenfolge. Ich bin nicht ganz sicher, was Sie wollten, aber ich nehme an, Sie wollten den Parameternamen mit dem Variablennamen übereinstimmen. Ich glaube nicht, funktioniert es auf diese Weise, aber die folgenden ungetesteten Code sollte erhalten Sie gehen:

<?php 

$params = array(
    "gamename", 
    "gameowner", 
    "gameownerid", 
    "placeid", 
    "serverjobid", 
    "serverid", 
    "serverplayers", 
    "sendername", 
    "senderid", 
    "senderage", 
    "senderwarnings", 
    "calltype", 
    "reportinfo", 
    "suspect" 
); 

$cols = ""; 
$vals = ""; 
$binding_type = ""; 
$get_params = array(); 

// first pass to build the query, 
// and validate inputs exist 
for ($params as $param) { 
    if (isset($_GET["$param"])) { 
    $cols .= "$param,"; 
    $vals .= "?,"; 
    $get_params []= $_GET["$param"]; 
    // determine the binding type as either integer or string 
    if (is_numeric($_GET["$param"])) 
     $binding_type .= "i"; 
    else 
     $binding_type .= "s"; 
    } else die("$param is not set"); 
} 

// trim trailing commas 
$cols = rtrim($cols, ","); 
$vals = rtrim($vals, ","); 

$sql = "INSERT INTO mss_calls3 ($cols) VALUES ($vals);"; 

$servername = ""; 
$username = ""; 
$password = ""; 
$database = ""; 

// Establish MySQL Connection 
$conn = new mysqli($servername, $username, $password, $database); 

// Check connection 
if ($conn->connect_error) { 
    die("MySafeServer Database Connection Failed: " . $conn->connect_error); 
} 

// prepare statement 
$stmt = $conn->prepare($sql) or die($conn->error); 

// bind parameters 
// watch this is the tricky dynamic part I got help from the following, but may need some work: 
// http://stackoverflow.com/questions/627763/php-and-mysqli-bind-parameters-using-loop-and-store-in-array 
// http://no2.php.net/manual/en/mysqli-stmt.bind-param.php#89171 
call_user_func_array(array($stmt, 'bind_param'), array_merge(array($stmt, $binding_type), $get_params)); 

// execute 
if($stmt->execute()) 
    echo "success!"; 
else 
    echo $stmt->error; 

$stmt->close(); 
$conn->close(); 

?> 
Verwandte Themen