2017-05-12 23 views
0

因此,我學習PHP,我想嘗試構建一個像小型貨幣化的URL縮短器,只是爲了好玩!所以每次有人點擊一個用戶鏈接時,應該在MySQL表中添加一次點擊(針對用戶)。我嘗試了很多腳本,但都不工作。爲每個用戶顯示點擊次數

<html lang="en-US"> 
<?php 
$servername = "***"; 
$username = "***"; 
$password = "***"; 
$dbname = "***"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

mysqli_query("UPDATE users SET 'hits' = 'hits'+1 WHERE id = 1"); 

?> 

再經過顯示通過$行[「」]在儀表盤的用戶的點擊...但是當我爲onload的頁面不計算點擊次數......在mysql數據庫中的數呢'改變...我做錯了什麼。 Alsom你有更專業的想法如何做到這一點,因爲我知道,這不是一個很好的選擇......我也有類似的東西,但它不工作太...

 $user_ip=$_SERVER['REMOTE_ADDR']; 
     $check_ip = mysqli_query("select userip from pageview where page='1' and userip='$user_ip'"); 
     if(mysqli_num_rows($check_ip)>=1) 
     { 

     } 
     else 
     { 
     mysqli_query("insert into pageview values('1','1','$user_ip')"); 
     mysqli_query("update users set 'hits' = 'hits'+1 where id=1 "); 

    } 
+2

**警告**:使用'mysqli'時,應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param' ](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **不要**將'$ _POST','$ _GET'或**任何**用戶數據直接放入查詢中,如果有人試圖利用您的錯誤,這可能會非常有害。 – tadman

+2

您對'hits'列使用了錯誤的符號。嘗試刪除單引號,它們不是必需的。如果您確實需要轉義列名稱,請使用反引號。 – tadman

+0

mysqli_query(「UPDATE users SET'hits' ='hits' + 1 WHERE id = 1」); 我試過這個,但它不工作 –

回答

1

如果你習慣了mysql_query,你需要以不同的方式做到這一點,一個連接句柄是必需的,不再隱含。避免滑倒的最好辦法是使用面向對象的調用方法:

$conn->query(...); 

這種方法通常不太詳細。

+0

你可以更詳細 –

+0

它工作<3,但你認爲有一個更專業的方式,因爲我不認爲大網站會像那樣做 –

+0

這是*完全*專業@ I.Dynin –