2015-12-30 78 views
0

我很少做編程。我只知道足夠危險,因爲他們說,我只是組裝一些代碼來獲得我想要的。我的代碼似乎死在$sql查詢語句。它從不返回任何數據。它應該顯示存在的13條記錄,但是它表示沒有任何可以返回的記錄。我猜這是某種語法錯誤?PHP/mysql代碼的小部分死亡。不知道爲什麼

<?php 
$host = 'myipaddress'; 
$user = 'myuser'; 
$pass = 'mypass'; 
$db = 'mydatabase'; 

$conn = mysql_connect($host, $user, $pass, $db) or die("Can not connect." . mysql_error()); 

// Create connection 
//$conn = mysqli_connect($host, $user, $pass, $db); 
// Check connection 
if (!$conn) { 
die("Connection failed: "); 
} 

$sql = "SELECT * FROM pages WHERE pid > '5'"; 
$result = mysql_query($conn, $sql); 

if (mysql_num_rows($result) > 0) { 
// output data of each row 
while($row = mysqli_fetch_assoc($result)) { 
    echo "id: " . $row["pid"]. " - Name: " . $row["title"]. "<br>"; 
} 
} else { 
echo "0 results"; 
} 

mysql_close($conn); 
?> 
+0

'$ conn = mysql_connect($ host,$ user,$ pass,$ db)'不會做你認爲它所做的事情。 RTM http://php.net/manual/en/function.mysql-connect.php - 同樣適用於'$ result = mysql_query($ conn,$ sql);'同樣,RTM http://php.net/manual/ en/function.mysql-query.php –

+0

請[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[編寫]​​(http://en.wikipedia.org/ wiki/Prepared_statement)語句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+1

你在混合'mysql_ *'和'mysqli_ *'函數。這是行不通的。 –

回答

1

您使用mysql_ API的權利,直到你試試,在這裏取行,你正在使用mysqli_。這是行不通的。

while($row = mysqli_fetch_assoc($result)) { 
    echo "id: " . $row["pid"]. " - Name: " . $row["title"]. "<br>"; 
} 

Your script is at risk for SQL Injection Attacks.stop using mysql_* functionsThese extensions已在PHP 7中刪除。瞭解有關PDOMySQLiprepared對帳單,並考慮使用PDO,it's really pretty easy

編輯:(!善於發現的眼睛拉爾夫)連接字符串不會起作用,因爲mysql_connect()不接受數據庫連接的一部分。您必須使用附加功能mysql_select_db()來選擇您的數據庫。

此外,沒有必要指定連接鏈接mysql_query()但如果你這樣做應該是參數:

$result = mysql_query($sql, $conn); 
0

你需要的地方mysqli_fetch_assoc()使用mysql_fetch_assoc(),因爲你的以前的功能都是基於mysql_*,不mysqli_*

if (mysql_num_rows($result) > 0) { 
// output data of each row 
while($row = mysql_fetch_assoc($result)) { 
    echo "id: " . $row["pid"]. " - Name: " . $row["title"]. "<br>"; 
} 
} else { 
echo "0 results"; 
} 
1

有相當多的你的代碼錯誤。

mysql_connect($host, $user, $pass, $db)

mysql_connect()使用3個參數,第四屆沒有做什麼,你認爲它。

您需要使用mysql_select_db()http://php.net/manual/en/function.mysql-select-db.php

然後,

$result = mysql_query($conn, $sql);

連接來第二次在mysql_

然後你混合MySQLi的功能mysqli_fetch_assoc不與mysql_庫混用。

所以,僅僅使用完整的MySQLi庫

或PDO:

隨着一份準備好的聲明:


檢查真正的錯誤,應查詢失敗:

error reporting添加到您的文件的頂部,這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:顯示錯誤應該只在分期完成,並且從不生產。


正如你所看到的,我沒有爲你提供全部重寫,因爲我覺得在「授人以漁。」,養活他們的生活,而不是「扔他們一條魚......」,只餵它們一天(眨眼)。

相關問題