2016-09-02 11 views
0
$short = $_REQUEST[ "short" ]; 

    $mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB); 

    $clicks = $mysqli->query("SELECT clicks FROM leafy_urls WHERE short = '$short'")->fetch_object()->clicks; 

    $clicks++; 

    $statement = $mysqli->prepare("UPDATE leafy_urls SET clicks=? WHERE short=?"); 
    $statement->bind_param('is', $clicks, $short); 

    $results = $statement->execute(); 

    if($results) 
    { 
     $long_url = $mysqli->query("SELECT long_url FROM leafy_urls WHERE short = '$short'")->fetch_object()->long_url; 
     Header("HTTP/1.1 301 Moved Permanently"); 
     header("Location: " .$long_url. ""); 
    } 
    else 
    { 
     //$html = "Error: Cannot find short URL"; 
     $html = 'Error : ('. $mysqli->errno .') '. $mysqli->error; 
    } 

    $mysqli->close(); 

このコードは、エラーをスローしませんが、データベースの番号は増えません。あなたはプリペアドステートメントを使用しますが、あなたがそうのように、すべての入力値のためにそれを使用する必要があることを1PHP Mysqli URL更新の更新

答えて

0

良いのまま:

$statement = $mysqli->prepare("UPDATE leafy_urls SET clicks=clicks+1 WHERE short = ?"); 
$statement->bind_param('s', $short); 

はまた、あなたが値をインクリメントするために、純粋にSQLを使用できることに注意してください。

+0

愚かな質問です。値をインクリメントするために純粋にsqlを使用するにはどうすればよいですか?更新時に自動インクリメントを追加しますか? – Blizzard

+0

あなたはこれを次のようにします:私の答えで見ることができる 'clicks = clicks + 1'。 – MarcHoH

+0

調整が完了しました。まだクリック数を更新していません。私は何かを欠いているに違いない? – Blizzard