2016-03-19 25 views
0

Yani, her şey 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=noneNeden bu benim mysql sunucusuna gönderilmiyor?

için kesinlikle hiçbir şey gösterir ve benim MySQL veritabanına veri göndermez gidin.

İşte kodum. Sadece güvenli olmak için mysql bilgimi kaldırdım.

<?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

bir arayüz almak .....-pick-mix mysql ve mysqli ile oynamayın (mysqli: O şekilde çalışır, ancak aşağıdaki denenmemiş kod gidiyorsun almak gerektiğini düşünmüyorum) ve bununla sopa –

+0

Ne demek istiyorsun? –

+0

Kodun başarılı olup olmadığını veya başarısız olup olmadığını unutmayın, yalnızca bağlantı başarısız olursa bir şey yazdırır - sorgunuzun çalışıp çalışmadığını size söyleyecek bir şey yoktur. – andrewsi

cevap

0
@Mark doğruysa, yalnızca mysqli işlevlerini kullanmaya devam etmelisiniz.

@andrewsi veri sorgulama değiliz çünkü, insert deyimi ancak başarısızlık üzerinde bir başarı olup olmadığını yazdırır Kodunuzdaki şey yok diyor, bu yüzden bir katma gibi "başarı!" Eko. Değerlerin eklenip eklenmediğini görmek için veritabanını sorgulamak isteyeceksiniz.

@Matt ve @ Mark'ın ifadeleri hazırlamakla ilgili noktaları, girdinizi dezenfekte etmek için çok önemlidir - bu, güvenlik 101'dir ve bunun için biraz uğraşmanız gerekir.

Ama sonuç olarak, @CodeGodie çalışmamı sağlamak için en büyük sorununuzu gördüm. Tüm değişkenlerinizi, en sondaki "şüpheli" hariç $_GET['param'] ile aynı değere atayabilirsiniz. Ve soruda gönderdiğiniz bağlantıdan, sorgu dizinizde "param" yoktur. Ne için gittiğinden emin değilim, ama parametre ismini değişken ismiyle eşleştirmek istediğini kabul ediyorum.

<?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(); 

?> 
İlgili konular