2016-06-28 147 views
-1

我正在製作一款遊戲,並且遇到了一些似乎無法正常工作的查詢時遇到的問題。我有四個變量(被驗證)爲什麼SQL UPDATE QUERY返回false?

$id, $plantId, $stage, $started 

而且我的查詢看起來像這樣...

$sql = " 
     UPDATE growth 
     SET plantId = '$plantId', stage = '$stage', started = '$started' 
     WHERE id = '$id' 
"; 

它返回假的,但我試圖在phpMyAdmin相同的查詢和它的工作! 我在做什麼錯?

+3

你必須給我們更多的東西。什麼API使用?你有沒有試過檢查'$ sql'的值?代碼在哪裏運行? – FirstOne

+0

正在執行的查詢的實際運行時值是什麼?數據庫中的實際錯誤是什麼? – David

+0

__exactly__返回「false」? –

回答

0

儘量不要使用普通的MySql。我知道學習新技術可能會感到壓倒性的,但我們生活在2016年。有很多工具可以讓你的生活更輕鬆。

例如DIBI數據庫層: https://github.com/dg/dibi

您可以使用正式版所示的文檔中:

SELECT:

dibi::query('SELECT * FROM users WHERE id = ?', $id); 

INSERT

$arr = [ 
    'name' => 'John', 
    'is_admin' => TRUE, 
]; 
dibi::query('INSERT INTO users', $arr); 

UPDATE

dibi::query('UPDATE users SET', $arr, 'WHERE `id`=?', $x); 

或者你可以使用FLUENT版本

選擇

$res = dibi::select('product_id')->as('id') 
    ->select('title') 
    ->from('products') 
    ->innerJoin('orders')->using('(product_id)') 
    ->orderBy('title') 
    ->fetchAll(); 

INSERT

$record = array(
    'title' => 'Výrobek', 
    'price' => 318, 
    'active' => TRUE, 
); 
dibi::insert('products', $record) 
    ->execute(); 

UPDATE

$record = array(
    'title' => 'Výrobek', 
    'price' => 318, 
    'active' => TRUE, 
); 
dibi::update('products', $record) 
    ->where('product_id = %d', $id); 
    ->execute(); 

它會讓你的生活更輕鬆。學習流暢的版本並連接你的查詢甚至是非常有趣的。當你需要測試你的查詢時,只需使用test()方法。

你甚至不必擔心sql注入。

+0

感謝您的提示。一旦我掌握了基本知識,我會着眼於這一點。但是當我試圖學習某些東西時,我發現它有助於首先理解原始核心。然後,它更容易學習它周圍的各種包裝。 –