我有带有URL http://siteurl/directory/onemore/$fileID.php 的网页我正在尝试提取$fileID,然后使用
$query = $mysqli->query("SELECT * FROM tablename WHERE ID = $fileID");
$rows = mysqli_fetch_array($query);
$hits = $rows['HITS'];
$hits = $hits + 1;
$query = $mysqli->query("UPDATE tablename SET HITS = $hits WHERE ID = $fileID");
echo 'Total hits on page'.$hits.'';
我不知道如何只获得$fileID部分,想问我的其余程序是否正确?
编辑
使用上面的代码,命中卡在一个。我在想每次页面刷新后它们都会更新到 +1。
您可以
像这样确定$fileId:
/* $_SERVER['PHP_SELF'] results to e.g. '/directory/onemore/5.php' */
/* basename(...) results to e.g. '5.php' */
$fileName = basename($_SERVER['PHP_SELF']);
/* take the text before the last occurrence of '.' */
$fileID = substr($fileName, 0, strrpos($fileName, '.'));
$query = $mysqli->query("UPDATE tablename SET HITS = HITS + 1 WHERE ID = $fileID");
$query = $mysqli->query("SELECT * FROM tablename WHERE ID = $fileID");
$rows = mysqli_fetch_array($query);
$hits = $rows['HITS'];
echo 'Total hits on page'.$hits.'';
试试这个:
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
输出
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
看看,如果有帮助。
如果您不需要每次都打印命中,则可以在单个查询中将其递增,这样更加清晰和高效。
UPDATE tablename SET hits = hits + 1 WHERE id = $fileID
获取 URL 的$fileID:看看 pathinfo() - 这个函数提取不同部分的 URL
在您的情况下,它将是:
$path_parts = pathinfo($_SERVER["SCRIPT_FILENAME"]);
$fileID = $path_parts['filename'];
您的更新查询将起作用,如果您只想计数而不显示新值,您可以使其更简单 - 只需在更新表行时增加 HITS:
$query = mysqli->query("UPDATE tablename SET HITS = HITS+1 WHERE ID = $fileID");