2012-08-07 32 views
-1

我總是與特徵件的mysql_query或mysql_fetch_array使用的MySQL和PHP ...從MySQL到mysqli的

然而,我被告知要切換到mysqli的一些原因。

我試着用mysqli編碼,但似乎沒有任何工作。這是否有效?

<?php 
$con = new mysqli("localhost","root","",""); 

mysql_select_db("dbName", $con); 
$itemId = ($_GET['itemId']); 
$query = ("SELECT * FROM item_descr WHERE id_item = $itemId"); 
$result = $mysqli->query($query); 
$row = mysql_fetch_array($result); 

?> 

<div class="section"> 
<?php 
$query2 = "SELECT * FROM items_sections WHERE id_item = $itemId" 
$result2 = $mysqli->query($query2); 
$row2 = $result2->fetch_array(MYSQLI_BOTH); 
echo "<font class='textSection'> Home > ".$row2[section1]; 
if ($row2[section2] != '') 
{ 
echo " > ".$row2[section2]; 
} 
+4

一個更好的開關將PDO :) http://php.net/manual/en/book.pdo.php如到「不起作用」,這不是一個好的問題描述。究竟什麼不行,調試告訴你什麼?你得到什麼錯誤信息? – 2012-08-07 11:51:57

+0

使用帶佔位符的PDO,它更容易,而且上面的代碼可以SQL調入。 – Mark 2012-08-07 11:52:46

+2

你的代碼是一半mysqli/half mysql。你應該首先閱讀手冊http://www.php.net/manual/en/mysqli.quickstart.php – Tchoupi 2012-08-07 11:53:59

回答

1

你是不是正確傳遞數據庫名稱入住手冊更正確使用http://php.net/manual/en/mysqli.query.php --- $con = new mysqli("localhost","root","","");

做它 -

$con = new mysqli("localhost","root","","YOUR DB NAME"); 

,也更好地檢查連接以及 -

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 
+0

只要您的查詢明確性包含它,您就不需要傳遞數據庫名稱。例如:'db1.tablename' – mlishn 2012-08-07 11:59:30

+0

@mlishn好點,實際上他是在混淆代碼,所以可能是多數民衆贊成在一個衝突的情況下...你只能建議最好的方式來處理...因爲他沒有評論評論/答案;) – swapnesh 2012-08-07 12:09:50

1

您被告知切換到mysqli,因爲mysql正在折舊。 PDOmysqli是一種選擇,許多人會爲其中一個而爭論,但它完全是優先選擇的。

爲了使用mysqli您需要使用預準備語句。

$stmt = $mysqli->prepare("SELECT * FROM table WHERE id=?"); 
$stmt->bind_param("s", $int); 
$stmt->execute(); 
$stmt->bind_result($result); 
$stmt->fetch(); 

看這個供參考:http://php.net/manual/en/mysqli.prepare.php