2016-03-13 93 views
0

任何人都可以幫助我嗎?我的代碼不會運行,我不明白爲什麼不。從數據庫檢索數據給出錯誤

<?php 
include('connect-db.php'); 


if (isset($_GET['naam'])) 
{ 
// query db 
$naam = $_GET['naam']; 
$result = mysql_query("SELECT * FROM planten WHERE naam=$naam") 
or die(mysql_error()); 
$row = mysql_fetch_array($result); 


if($row) 
{ 
// get data from db 
$cat = $row['cat']; 
$mintemp = $row['mintemp']; 
$uitleg = $row['uitleg']; 
$img = $row['img']; 

} 
} 



?> 

的連接工作和積極的,和數據庫名稱&行的名稱是正確的。

+4

你正在得到什麼錯誤? –

+0

並且不要使用棄用的API – Strawberry

回答

1

試試這個

$result = mysql_query("SELECT * FROM planten WHERE naam='".$naam."'") or die(mysql_error()); 
1

我認爲這個問題是在你的查詢語句。由於$ naam是字符串,因此需要使用引號將查詢中的字符串括起來。請如下查詢您的查詢語句並嘗試:

$result = mysql_query("SELECT * FROM `planten` WHERE `naam` ='$naam'"); 
0

我想你的$ naam應該是一個字符串。你應該逃避並引用它。否則,它將被SQL解釋爲僞列名稱。

if (isset($_GET['naam'])) 
{ 
    // query db 
    $naam = mysql_real_escape_string($_GET['naam']); 
    $result = mysql_query("SELECT * FROM planten WHERE naam='$naam'") 
    or die(mysql_error()); 
    ... 

如果你use PDO with SQL query parameters這會更安全和更容易。沒有必要逃避任何事情或擔心報價,因爲它都是通過使用參數爲您照顧的。

if (isset($_GET['naam'])) 
{ 
    // query db 
    $sql = "SELECT * FROM planten WHERE naam=?"; 
    $stmt = $pdo->prepare($sql); 
    $stmt->execute([$_GET['naam']]); 
    ... 

FYI老 「的mysql_connect()」 API被廢棄在PHP 5.5(2013年6月),而在PHP 7.0(2015年12月)已被刪除。見http://php.net/manual/en/mysqlinfo.api.choosing.php

我推薦使用PDO。