2012-04-17 213 views
2

我需要製作一個PHP代碼,從服務器獲取數據,更新數據並向用戶更新數據。我是PHP的初學者,所以我不知道如何做到這一點。這是我現在擁有的代碼。從數據庫中選擇數據並進行更新PHP/PDO

那麼如何更改代碼以使其更新數據?

<?php 
include 'config.php'; 

$ID = $_GET['ID'] ; 

$sql = "select * from table where ID = \"$ID\" and condition = false "; 
// This is what I need the table to be updated "Update table where where ID = \"$ID\" set condition = true" ; 

try { 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->query($sql); 
    $data = $stmt->fetchAll(PDO::FETCH_OBJ); 
    $dbh = null; 
    echo '{"key":'. json_encode($data) .'}'; 
} catch(PDOException $e) { 
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
} 


?> 
+0

是否要選擇或更新?你的sql查詢是用於select的。 – 2012-04-17 10:29:04

+0

我想選擇數據然後更新它。更新查詢是在評論中,但我不知道在哪裏以及如何把它。 – user1323294 2012-04-17 10:33:03

+0

你想更新什麼?你爲什麼要用相同的值更新你的數據庫? – Bono 2012-04-17 10:39:27

回答

0

試試這個。我認爲這是一起的,你在找什麼線路:

$query = "select * from table where ID = \"$ID\" and condition = false "; 
$query_result = @mysql_query($query); 
$query_row = mysql_fetch_assoc($query_result); 
$update_query = "UPDATE table SET condition = true WHERE ID = {$row['ID']};"; 
if(@mysql_query($update_query)) { 
    echo "Update succeeded!"; 
} else { 
    echo "Update failed!"; 
} 
+0

我需要json_encode更新的查詢。我怎樣才能做到這一點? – user1323294 2012-04-17 10:49:17

+0

你爲什麼用@來抑制錯誤。可能是一個壞主意-1 – 2012-04-17 12:10:11

+0

,你也看不到他在使用PDO。你向他展示了錯誤的方向 – 2012-04-17 12:11:16

-1
<?php 

$ID  = 1; 

try { 
     $db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
     $select_statement = $db->prepare('select * from table1 where id = :id and `condition` = false'); 
     $update_statement = $db->prepare('update table1 set `condition` = true where id = :id'); 
     $select_statement->execute(array(':id' => $ID)); 
     $results = $select_statement->fetchAll(); 
     $update_statement->execute(array(':id' => $ID)); 
     echo '{"key":' . json_encode($results) .'}'; 

} catch(PDOException $e) { 
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
} 

?> 
0

一個想法是創建一個由PDO連接不同的數據庫連接文件,並在您的應用程序重複使用。如何做到這一點。

database.php你可以不喜歡它

try { 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    //catch the exception here and do whatever you like to. 
} 

和無處不在,你要使用的連接,你可以做

require_once 'Database.php';

和一些樣品CRUD(創建,讀取,更新,刪除)使用PDO。

//Create or Insert 
$sth = $dbh->prepare("INSERT INTO folks (first_name) values ('Cathy')"); 
$sth->execute(); 
//Read or Select 
$sth = $dbh->query('SELECT name, addr, city from folks'); 
//Update 
$sth = $dbh->prepare("UPDATE tablename SET col = val WHERE key = :value"); 
$sth->bindParam(':value', $value); 
$sth->execute(); 
//Delete 
$dbh->query('DELETE FROM folks WHERE id = 1'); 

你也應該學習有關有名和無名的佔位符,逃避SQL注入等,你可以閱讀更多有關PDO有一個很容易被NETTUTS理解教程here

希望這可以幫助你。