2011-03-30 56 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,添加一個,保存回數據庫。
或者你可以使用自動增量(如果可能的話)。

相關問題