2017-07-18 18 views
-1

我已經測試一切,沒有什麼在SQL中鏈接的作品,這裏是我的代碼如何在mysql數據庫1添加到一個int每次有人去

<?php 
session_start(); 
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) { die('Invalid id'); } 
$conn = mysqli_connect("redacted", "redacted", "redacted", "redacted"); 
if (!$conn) { 
    die("Connection failed: ".mysqli_connect_error()); 
} 
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
$id = (int)$_GET['id']; 
"UPDATE affiliate SET clicks WHERE ID='$id' = clicks + 1"; 
header("Location: https://discord.gg/CjzZRBq"); 
?> 

後,我希望它呼應的用戶信息中心這是我

<h1>Clicks</h1> 
       <br /> 
       <br /> 
       You have gotten: <?php $conn = mysqli_connect("localhost", 
"id2278622_jonny", "Fencing1", "id2278622_affiliate"); 
if (!$conn) { 
    die("Connection failed: ".mysqli_connect_error()); 
} 
$sql = "SELECT clicks FROM affiliate WHERE ID='$ID'"; 
echo "$sql"; 
?> Clicks! 

,但它只是回聲的SQL代碼

+0

嘗試''更新會員SET點擊=點擊+ 1 WHERE ID ='$ id'「;' – Maraboc

+0

@Maraboc我做了,但它不工作 –

+0

嘗試''更新會員SET點擊= 1001 WHERE ID ='$ id '';'只是爲了查看是否可以更新數據庫中的記錄 – Maraboc

回答

1

您尚未將您的查詢實際發送到數據庫。您剛剛構建了一個查詢字符串。一個你甚至沒有保存到變量的字符串。

$id = (int)$_GET['id']; 
"UPDATE affiliate SET clicks WHERE ID='$id' = clicks + 1"; 
header("Location: https://discord.gg/CjzZRBq"); 

應該是:

$id = (int)$_GET['id']; 
$qry= "UPDATE affiliate SET clicks = clicks+1 WHERE ID='$id'"; 
conn->query($qry); 
header("Location: https://discord.gg/CjzZRBq"); 

你也應該看看了SQL Injection。投到一個int可以緩解風險,但是你一定要使用綁定變量。

+0

的php沒有工作,它仍然停留在0 –

+0

@JonathanConnery:hm,看起來像我錯過了SQL本身的錯誤。請再試一次。 – Jacobm001

0

的問題是,你只是呼應$sql(這是查詢字符串),而不是傳遞一個SQL COM到你的數據庫。另請注意,您當前的腳本容易受到SQL注入的影響。爲了避免這種情況,使用prepared statements

// Retrieve the number of existing clicks 
$stmt = $conn->prepare("SELECT clicks FROM affiliate WHERE ID = ?"); 
$stmt->bind_param("i", $id); 
$stmt->execute(); 
$stmt->bind_result($clicks); // Store the result in the $clicks variable 

$clicks++; // Increment clicks 

// Update the table 
$stmt2 = $conn->prepare("UPDATE affiliate SET clicks = ? WHERE ID = ?"); 
$stmt2->bind_param("si", $clicks, $id); 
$stmt2->execute(); 

// Close the connection once finished 
$conn->close(); 

希望這有助於! :)

+0

您已得到: 注意:未定義變量:sql in/storage/ssd2/622/2278622/public_html/login /第60行的控制面板/ index.php 警告:mysqli :: query():在/storage/ssd2/622/2278622/public_html/login/Dashboard/index.php上的空行查詢60行 –

+0

您不應該得到考慮到我根本不使用'$ sql'變量。 –

+0

您已經得到: 說明:未定義變量:在mysqli的/storage/ssd2/622/2278622/public_html/login/Dashboard/index.php線60上 致命錯誤:未捕獲的錯誤:調用一個成員函數準備()在/storage/ssd2/622/2278622/public_html/login/Dashboard/index.php:60堆棧跟蹤:#0 {main}拋出 –

相關問題