2017-06-01 39 views
-2

我试图在PHP中使用MySQL的更新动态列的名字,但我得到的错误 这里是代码无法使用动态变量作为列名在PHP MySQL的

$time=date("H"); 
$video_view = 234 
$update_query = "UPDATE videos SET ". $time . "= {$video_view} WHERE id={$id}"; 

以下是错误

UPDATE videos SET 14= 200079 WHERE id=1Query failedYou have an error in 
    your SQL syntax; check the manual that corresponds to your MariaDB 
server version for the right syntax to use near '14= 200079 WHERE id=1' at line 1 
+1

你列实际上包含了所有的整数? '$ time'的价值是什么? –

+1

列名应以字符开始 – Jens

+0

@Jens他们应该不过是“合法的”。他们只需要正确对待他们。 –

回答

1

首先应该要使用prepared statements and bound parameters的。
如果列真正把名字“14”像变量$time,那么你可以试试这个

$update_query = "UPDATE videos SET `". $time . "` = {$video_view} WHERE id={$id}"; 

所以据我所知列名应与`站`因为类似的数字或函数名保留名称。
我会避免它,因为它会令这些错误UND如果查询有一定道理,我不知道

+0

请解释一下。这个问题应该得到一个合适的回答 –

+0

[小博](http://bobby-tables.com/)说***脚本是在对SQL注入攻击的风险。(http://stackoverflow.com/questions/60174 /如何-可以-I-防止-SQL注入功能于PHP)***。即使[转义字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+0

力挽狂澜对教学/传播草率和危险的编码实践。如果您发布的答案没有准备好的陈述[您可能想在发布之前考虑这一点](http://meta.stackoverflow.com/q/344703/)。另外[一个更有价值的答案来自于显示OP的正确方法](https://meta.stackoverflow.com/a/290789/1011527)。 –