Abs*_*Abs 4 php mysql sql debugging
我试图通过将其整数值增加1来更新表中的字段.这是我正在使用的:
function updateViews($id){
$sql = "UPDATE tweets SET tweet_views = tweet_views + 1 WHERE tweet_key = '$id'";
$result = mysql_query($sql) or die("DB Error : ". mysql_error());
return $result;
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现每次增加2而不是1?我究竟做错了什么?
谢谢
从答案中SQL是正确的.你认为这可能会受到重写引擎的影响吗?我问,因为我100%确定这不会运行两次或我没有拨打电话,因为有两个脚本.一个调用函数和一个函数!这令人困惑.
使用调试功能.我得到这个输出:
array(4) {
["file"]=>
string(35) "/home/magic/public_html/dbUpdate.php"
["line"]=>
int(16)
["function"]=>
string(15) "myDebugFunction"
["args"]=>
array(0) {
}
}
array(4) {
["file"]=>
string(31) "/home/magic/public_html/view.php"
["line"]=>
int(10)
["function"]=>
string(11) "updateViews"
["args"]=>
array(1) {
[0]=>
&string(5) "7jjdd"
}
}
Run Code Online (Sandbox Code Playgroud)
看起来好像脚本被调用一次,但它仍然被更新两次??? 救命!:(
同样来自日志文件,看起来好像是三次调用脚本?
13:16:28 id:4a6c9d7cf38016.29304000
_SERVER[REQUEST_URI]=/lucic
_SERVER[REDIRECT_URL]=/lucic
/home/magic/public_html/dbUpdate.php@16 :myDebugFunction
/home/magic/public_html/view.php@10 :updateViews
13:16:30 id:4a6c9d7eaf93e3.88114161
_SERVER[REQUEST_URI]=/lucic
_SERVER[REDIRECT_URL]=/lucic
/home/magic/public_html/dbUpdate.php@16 :myDebugFunction
/home/magic/public_html/view.php@10 :updateViews
13:16:31 id:4a6c9d7f846557.12618673
_SERVER[REQUEST_URI]=/lucic
_SERVER[REDIRECT_URL]=/lucic
/home/magic/public_html/dbUpdate.php@16 :myDebugFunction
/home/magic/public_html/view.php@10 :updateViews
Run Code Online (Sandbox Code Playgroud)
这是我的htaccess文件的内容,可能会导致问题.
# REWRITE DEFAULTS
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]
# /view.php?t=h5k6 externally to /h5k6
RewriteCond %{THE_REQUEST} ^GET\ /view\.php
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$
RewriteRule ^view\.php$ /%2? [L,R=301]
# /h5k6 internally to /view.php?t=h5k6
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L]
Run Code Online (Sandbox Code Playgroud)
您可以测试您的函数是否被调用两次,或者您的脚本是否带有一些调试日志.
function myDebugFunction() {
static $iid = null;
if ( is_null($iid) ) {
$iid = uniqid('', true);
}
$log = date('H:i:s').' id:'.$iid."\n".
" _SERVER[REQUEST_URI]=". @$_SERVER['REQUEST_URI']."\n" .
" _SERVER[REDIRECT_URL]=". @$_SERVER['REDIRECT_URL'];
foreach(debug_backtrace() as $bt) {
echo '<pre>'; var_dump($bt); echo '</pre>';
$log .= "\n ".$bt['file'].'@'.$bt['line'].' '.@$bt['class'].':'.$bt['function'];
}
$log .= "\n";
error_log($log, 3, 'mydebug.log');
}
function updateViews($id) {
myDebugFunction();
$sql = "
UPDATE
tweets
SET
tweet_views = tweet_views + 1
WHERE
tweet_key = '".mysql_real_escape_string($id) ."'
";
$result = mysql_query($sql) or die("DB Error : ". mysql_error());
return $result;
}
Run Code Online (Sandbox Code Playgroud)
如果在mydebug.log中找到两次相同的id,则该函数被调用两次(在同一个php实例中).否则,您的脚本已被调用两次.
| 归档时间: |
|
| 查看次数: |
794 次 |
| 最近记录: |