2011-03-30 58 views
0

嗨,请告诉我,如果这是一个低资源的一段代码,如果不是我该如何改变它?谢谢!问题,如果我的代码是一个低资源一

$query = 'SELECT MAX(ID) as maxidpost 
      FROM wp_posts'; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_array($result)) { 
    $postid = $row['maxidpost']+1; 
    echo "p=$postid"; 
+1

这很好,microoptimizations不会有太大帮助。 – DhruvPathak 2011-03-30 03:49:40

回答

0

的改善是值得商榷的,但:

$query = 'SELECT MAX(ID) +1 as maxidpost 
      FROM wp_posts'; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_array($result)) { 
    echo "p = ". $row["maxidpost"]; 

你可以做数学中的SQL语句,不必做PHP操作为您节省。

很高兴知道您使用的是什么 - 如果它是要插入的下一个ID,使用AUTO_INCREMENT会更安全。 SELECT语句通常比INSERT/UPDATE/DELETE具有更高的优先级,因此可以在从另一个源插入之前读取 - 这可能会导致重复。

+0

嗨,感谢您的回答。我得到语法错误,意想不到的T_ENCAPSED_AND_WHITESPACE,希望T_STRING或T_VARIABLE或T_NUM_STRING在这行'echo'p = $ row ['maxidpost']“; }' – Rocky 2011-03-30 05:17:30

+0

@Rocky:查看更新,我总是粗略地介绍了PHP的变量 – 2011-03-30 05:19:43

+0

,它有一个双引号而不是单引号。应该是:echo'p ='。 $行[ 'maxidpost']; (我试图编辑您的帖子,但它告诉我,我必须编辑至少6个以上的字符。> _> – Flipper 2011-03-30 05:28:59

0

因为你是返回一个行,你应该这样做:

$query = 'SELECT MAX(ID) as maxidpost FROM wp_posts'; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_row($result); 
$postid = $row['maxidpost']+1; 
echo "p=$postid"; 

否则似乎你可以做的一样好。
您可以在每个帖子后重新计算邮政编码。从零开始。从数据库中选择它,使用该ID,添加一个,保存回数据库。
或者你可以使用自动增量(如果可能的话)。

相关问题