2013-03-11 88 views
-4

嘗試從我的sql數據庫加載一個HTML表單與數據。我使用Zampp phpmyadminphp從數據庫收集數據

<?php 
$user = 'root'; 
$password = ''; 


$database="client"; 

mysql_connect(localhost,client); 
@mysql_select_db($client) or die("Unable to select database"); 
echo $query = "SELECT * $title,$service_number,$firstName,$LastName,$dob,$address,$postcode,$tel_number,$mob_number,$email,$partner_id "; 
$result = mysql_query($query); 

mysql_close(); 
?> 

我有什麼不對?

+1

[**請不要在新的代碼中使用'mysql_ *'功能**](http://bit.ly/phpmsql )。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 – insertusernamehere 2013-03-11 14:30:35

+0

請看看SQL select語句是如何寫入的,沒有像你寫過你的:你沒有指定表名;你指定了「所有列」(*),然後給出一長串未定義的變量....即使是基本的閱讀應該告訴你,這是錯誤的 – 2013-03-11 14:32:46

+0

首先也許更好地使用PDO或mysqli,其次你是什麼嘗試與該查詢? :o – 2013-03-11 14:33:35

回答

3
  1. mysql_函數已被棄用。使用PDOmysqli_
  2. 不要使用@來抑制錯誤;使用錯誤處理程序(即mysql_error
  3. 你不能從任何表或
  4. 你無法抓取您的結果執行查詢
  5. 傳遞變量到一個查詢後沒有設置參數綁定任何列選擇離開你打開SQL注入

樣品使用的mysqli_

<?php 
$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5"; 

if ($result = mysqli_query($link, $query)) { 

    /* fetch associative array */ 
    while ($row = mysqli_fetch_assoc($result)) { 
     printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
    } 

    /* free result set */ 
    mysqli_free_result($result); 
} 

/* close connection */ 
mysqli_close($link); 
?> 

See the documentation

+0

解析錯誤:語法錯誤,意外';'在第111行的C:\ xampp \ htdocs \ show.php中 – pitbull10 2013-03-11 15:21:52

+0

@ pitbull10不確定你的意思。 – Kermit 2013-03-11 15:24:07

1

您的查詢結構不完整。您需要指定應從中選擇記錄的表名。例如,你應該做的是這樣的:

SELECT * FROM `tblname` 

這將選擇所有字段表中的每個記錄。您可以指定由包括他們(不*通配符)具體領域如下:

SELECT `title`, `service_number` FROM `tblname` 

雖然該mysql_*集的功能現在已經過時,您應該被告知,你應該使用任何PDOMySQLi

您還應該確保轉義您傳入的變量。您的代碼可以廣泛應用於當前形式的SQL注入。

0

你所查詢的都是錯的。正確SELECT查詢是這樣的:

SELECT fields FROM table; 
SELECT * FROM table; 

您正在使用您的查詢($title,$service_number...)PHP變量,在提供的代碼,不存在。您需要修復您的查詢。

注意:這是fields*,而不是兩者。另外,不要使用MySQL_ *,從PHP 5.5開始已經被棄用了。使用MySQLi_ *或PDO

0

這應該讓你去

<?php 
$dsn = 'mysql:host=localhost;dbname=client'; 
$username = 'root'; 
$password = ''; 
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
); 

$dbh = new PDO($dsn, $username, $password, $options); 

$sql = $dbh->prepare("SELECT title,service_number,FirstName,LastName,dob,address,postcode,te‌l_number,mob_number,email,partner_id FROM client_table"); 
$sql->execute(); 
$results = $sql->fetchAll(PDO::FETCH_ASSOC); 

foreach($results as $r){ 
var_dump($r); 
} 
+0

如果您從網站上獲取這些內容,則會複製內容。請引用來源。 – Kermit 2013-03-11 14:38:27

+0

dsn採自php.net pdo文檔: http://php.net/manual/en/ref.pdo-mysql.connection.php手工輸入的其他行 – janmyszkier 2013-03-11 15:19:30

+0

<?php $ dsn ='mysql:host本地主機=; DBNAME =客戶端'; $ username ='root'; $ password =''; $ options = array( PDO :: MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8', ); $ dbh = new PDO($ dsn,$ title,$ service_number,$ FirstName,$ LastName,$ dob,$ address,$ postcode,$ tel_number,$ mob_number,$ email,$ partner_id); $ sql = $ dbh-> prepare(「SELECT * FROM client」); $ sql-> execute(); $ results = $ sql-> fetchAll(PDO :: FETCH_ASSOC); foreach($ results as $ r){ var_dump($ r); } ?> – pitbull10 2013-03-11 15:50:41