2012-11-30 17 views
0

經過幾周的時間,使用參考書籍將網站放在一起後,現在發現mysql是多餘的,而且我需要將所有內容都更改爲mysqli,但是我對於如何完全做到這一點甚至得到嚴重衝突的結果儘管這意味着需要幾分鐘的時間。mysqli migration

任何人都可以告訴我現有的代碼有什麼問題 - 至少可以說 - 這很難變成mysql,因爲每次嘗試新解決方案時,我都會得到一個完全空白的頁面。

順便說一句,目前的一切工作很好。

這裏的配置頁面我連接到:

<?php 
# FileName="Connection_php_mysqli.htm" 
# Type="MYSQL" 
# HTTP="true" 
$hostname_em = "localhost"; 
$database_em = "php_test"; 
$username_em = "username"; 
$password_em = "password"; 
$em = mysql_pconnect($hostname_em, $username_em, $password_em) or trigger_error(mysql_error(),E_USER_ERROR); 
?> 

這裏是我的頭:

<?php require_once('connections/em.php'); ?> 
<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
if (PHP_VERSION < 6) { 
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
} 

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

switch ($theType) { 
case "text": 
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
    break;  
case "long": 
case "int": 
    $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
    break; 
case "double": 
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
    break; 
case "date": 
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
    break; 
case "defined": 
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
    break; 
} 
return $theValue; 
} 
} 

//Query for tblReviews 
mysql_select_db($database_em, $em); 
$query_getReview = "SELECT reviews.title, reviews.cover_art, reviews.blog_entry, reviews.rating, reviews.published, reviews.updated, artists.artists_name, contributors.contributors_name, contributors.contributors_photo, contributors.contributors_popup, categories_name FROM reviews JOIN artists ON artists.id = reviews.artistid JOIN contributors ON contributors.id = reviews.contributorid JOIN categories ON categories.id = reviews.categoryid ORDER BY reviews.updated DESC LIMIT 3"; 
$getReview = mysql_query($query_getReview, $em) or die(mysql_error()); 
$row_getReview = mysql_fetch_assoc($getReview); 
$totalRows_getReview = mysql_num_rows($getReview); 

mysql_select_db($database_em, $em); 
$query_getFeature = "SELECT features.features_words, features.published, features.updated, artists.artists_name, contributors.contributors_name, contributors.contributors_photo, contributors.contributors_popup, categories_name 
FROM features JOIN artists ON artists.id = features.artistid JOIN contributors ON contributors.id = features.contributorid JOIN categories ON categories.id = features.categoryid ORDER BY features.updated DESC LIMIT 1"; 
$getFeature= mysql_query($query_getFeature, $em) or die(mysql_error()); 
$row_getFeature = mysql_fetch_assoc($getFeature); 
$totalRows_getFeature = mysql_num_rows($getFeature); 
?> 

最後的地方,它的所有顯示器(我要包括所有的情況下,這是一個當我嘗試執行遷移時,會發生以下事情):

<?php do { ?> 
<table id="center_table" width="650" border="0" cellpadding="0" cellspacing="0"> 
<tr> 
    <td width="650" height="30" colspan="3" bgcolor="#FFFFFF"><a class="category" href="/" target="_top"><?php echo $row_getReview['categories_name']; ?></span></td><!-- category --> 
</tr> 
<tr> 
    <td width="60" height="60" rowspan="2" bgcolor="#FFFFFF"><span class="product_photo"><a href="<?php echo $row_getReview['cover_art']; ?>"><img id="product_photo" src="images/covers/<?php echo $row_getReview['cover_art']; ?>" width="60" height="60" border="0" alt="product_image" /></a><span></td><!-- product photo --> 
    <td width="590" height="30" colspan="2" bgcolor="#FFFFFF"><span class="artist"><?php echo $row_getReview['artists_name']; ?></span><span class="title"><?php echo $row_getReview['title']; ?></td><!-- artist & title --> 
</tr> 
<tr> 
    <td width="35" height="25" bgcolor="#FFFFFF"><div class="ienlarger"><img id="contributor_photo" /><a href="<?php echo $row_getReview['contributors_website']; ?>"><img src="<?php echo $row_getReview['contributors_photo']; ?>" alt="thumb" class="resize_thumb" /><span><img src="<?php echo $row_getReview['contributors_popup']; ?>" alt="large" /></span></a></div></td><!-- contributor photo --> 
    <td width="555" height="25" bgcolor="#FFFFFF"><span class="contributor">Written by</span>&nbsp;<?php echo $row_getReview['contributors_name']; ?></td><!-- Written by Contributor Name --> 
</tr> 
<tr> 
    <td width="650" colspan="3" bgcolor="#FFFFFF" valign="top"><p class="blog_entry"><?php echo nl2br($row_getReview['blog_entry']); ?></p></td><!-- Review --> 
</tr> 
<tr> 
    <td width="650" height="15" colspan="3" bgcolor="#FFFFFF"><!-- rating --> 
     <span class="rating">Rating :</span>&nbsp;<?php echo $row_getReview['rating']; ?>&nbsp;(out of a possible 1,000,000)<span class="published">Published :</span>&nbsp;<?php echo $row_getReview['published']; ?><span class="published">Updated :</span>&nbsp;<?php echo $row_getReview['updated']; ?></td> 
</tr> 
<tr> 
    <td width="650" height="15" colspan="3" bgcolor="#FFFFFF"> 
     <img src="images/spacer.gif" width="650" height="15" alt="" /></td> 
</tr> 
</table> 
<?php } while ($row_getReview = mysql_fetch_assoc($getReview)); ?> 
<?php do { ?> 
<table id="center_table" width="650" border="0" cellpadding="0" cellspacing="0"> 
<tr> 
    <td width="650" height="30" colspan="3" bgcolor="#FFFFFF"><a class="category" href="/" target="_top"><?php echo $row_getFeature['categories_name']; ?</span></td><!-- category --> 
</tr> 
<tr> 
    <td width="60" height="60" rowspan="2" bgcolor="#FFFFFF">&nbsp;</td><!-- product photo --> 
    <td width="590" height="30" colspan="2" bgcolor="#FFFFFF"><span class="artist"><?php echo $row_getFeature['artists_name']; ?></span><span class="title">Interview</td><!-- artist & title --> 
</tr> 
<tr> 
    <td width="35" height="25" bgcolor="#FFFFFF"><div class="ienlarger"><img id="contributor_photo" /><a href="<?php echo $row_getFeature['contributors_website']; ?>"><img src="<?php echo $row_getFeature['contributors_photo']; ?>" alt="thumb" class="resize_thumb" /><span><img src="<?php echo $row_getFeature['contributors_popup']; ?>" alt="large" /></span></a></div></td><!-- contributor photo --> 
    <td width="555" height="25" bgcolor="#FFFFFF"><span class="contributor">Written by</span>&nbsp;<?php echo $row_getFeature['contributors_name']; ?></td><!-- Written by Contributor Name --> 
</tr> 
<tr> 
    <td width="650" colspan="3" bgcolor="#FFFFFF" valign="top"><p class="blog_entry"><?php echo nl2br($row_getFeature['features_words']); ?></p></td><!-- Feature --> 
</tr> 
<tr> 
    <td width="650" height="15" colspan="3" bgcolor="#FFFFFF"><!-- rating --> 
     <span class="published">Published :</span>&nbsp;<?php echo $row_getFeature['published']; ?><span class="published">Updated :</span>&nbsp;<?php echo $row_getFeature['updated']; ?></td> 
</tr> 
<tr> 
    <td width="650" height="15" colspan="3" bgcolor="#FFFFFF"> 
     <img src="images/spacer.gif" width="650" height="15" alt="" /></td> 
</tr> 
</table> 
<?php } while ($row_getFeature = mysql_fetch_assoc($getFeature)); ?> 

就像你可以看到現在還沒有太多,現在是開始使用mysqli的最佳時機。

回答

0

我個人認爲你現在應該開始使用mysqli,因爲mysql不再被推薦用於編寫新代碼(http://www.php.net/manual/en/intro.mysql.php)。

也可以參考這個主題Which is fastest in PHP- MySQL or MySQLi?,「mysqli支持底層MySQL API的更多功能,比如事務和帶參數的準備查詢,也可以以面向對象的方式調用mysqli函數。

+0

謝謝,我明白了這一點。 –

+0

當然,歡迎您:)另外只是fyi(我猜你知道)我注意到你使用持久連接,mysqli沒有_pconnect函數,所以你必須在連接時手動預置p:到主機名(http:///php.net/manual/en/mysqli.persistconns.php) – SubRed

+0

謝謝,我會將它添加到我的chrissy列表中;-) –