为什么这个SQL UPDATE QUERY返回false?

时间:2016-06-28 18:38:15

标签: php sql sql-update

我正在制作一个游戏,但是我遇到了一个问题,但是我尝试做的事情似乎无法正常运行。我有四个变量(经过验证)

$id, $plantId, $stage, $started

我的查询看起来像这样......

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

它返回false,但我在phpMyAdmin中尝试了相同的查询并且它有效! 我做错了什么?

1 个答案:

答案 0 :(得分:0)

尽量不要使用普通的MySql。我知道学习新技术可能会让人感到压力,但我们生活在2016年。有很多工具可以让您的生活更轻松。

例如DiBi数据库层: https://github.com/dg/dibi

您可以使用官方版本,如文档中所示:

选择

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

INSERT

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

更新

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

或者您可以使用 FLUENT VERSION

选择

$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();

更新

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

它会让你的生活更轻松。学习流畅的版本和连接您的查询甚至非常有趣。当您需要测试查询时,只需使用test()方法。

您甚至不必担心sql注入。