2012-11-19 17 views
0

由於某些原因,我的SQL不會連接任何想法? 我使用函數連接到SQl,但遇到了一些麻煩,因爲它告訴我$ row_results沒有返回任何數據。PHP SQL Connect

function db_connect() { 
$db_connect = mysql_connect($db_host, $db_user, $db_pass); 
if (!$db_connect) 
{ 
    die('Can not connect: ' . mysql_error()); 
} 
mysql_select_db($db_name, $db_connect); 
} 

function db_close() { 
    mysql_close($db_connect); 
} 

function db_select($table_name, $table_where) { 
    $row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'"); 
    $row_get = mysql_fetch_array($row_result); 
    $row_count = mysql_num_rows($row_result); 
} 


db_connect(); 

db_select("attachments", "[email protected]"); 
die($row_get['email']); 

db_close(); 
+4

請不要使用'mysql_ *'函數編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。請參閱* [紅盒子](http://goo.gl/GPmFd)*?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

+0

語法高亮顯示您的腳本有錯誤。 –

+0

請勿使用mqsql_ *函數。使用mysqli或PDO。 'die('Can not connect:'。mysql_error());'你需要在'Can not'中跳過撇號的地方有一個語法錯誤 –

回答

0

改變這種

if (!$db_connect) 
{ 
    die('Can\'t connect: ' . mysql_error()); 
} 
+0

我知道這不是問題,我只是將它改爲不能用於stackoverflow。 –

+0

嘗試打印您的查詢並將其放入直接在sql中,你有什麼結果嗎? –

0

試試這個:

$db_config = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
     /* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

更高版本的PHP其推薦使用改進的MySQL庫。

0

在這一行中你引用了表名。

$row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'"); 

請勿在表名稱周圍加引號。選擇後運行mysql_error()可能會吐出與此相關的錯誤。

此外,mysql_*正在被棄用。您應該使用mysqli_*或PDO。

2

一個問題,我所看到的,是這樣的功能:

function db_select($table_name, $table_where) { 
    $row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'"); 
    $row_get = mysql_fetch_array($row_result); 
    $row_count = mysql_num_rows($row_result); 
} 

不必返回從任何東西。

你可以通過使用諸如啓動:

function db_select($table_name, $table_where) { 
    $row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'"); 
    $row_get = mysql_fetch_array($row_result); 
    $row_count = mysql_num_rows($row_result); 

    return array($row_count, $row_get); 
} 

你真的需要切換到與PDO或MySQL綁定變量準備好的發言避免你現在有SQL注入的問題。

+0

啊,是的,變量範圍很大。 – Sammitch

0

你的變量有問題。 函數外部db_select變量$ row_get不存在! 如果你想發送你的結果在一個新的變量,yo've得使用return這樣的:

function db_select($table_name, $table_where,$connection) { 

    $row_result = mysqli_query($connection,"SELECT * FROM $table_name WHERE email='".mysqli_real_escape_string($table_where).'"); 
    $row_get = mysqli_fetch_array($row_result); 
    $row_count = mysqil_num_rows($row_result); 
    return array($row_get,$row_count); 
} 


$var = db_select("attachments", "[email protected]", db_connect()); 
echo $var[0]['email'];