2016-09-02 4 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 update url clicks

ответ

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

Смежные вопросы