1

我仍然对 PDO 语句感到困惑,但下面的代码并没有像我想象的那样做

  $temp = "6c ";    
  $weather_report = "Its currently $temp " ; 

  $qry = $pdo->exec("UPDATE data_weather SET text= '$weather_report' WHERE period='report' ");

这确实更新了我的数据库,但仅使用“当前”并且缺少临时值,

在阅读了一些文章后,我相信我需要使用报价,但我不知道如何实现它?

请问有什么帮助吗?

4

2 回答 2

5

请使用查询参数而不是将变量插入 SQL 字符串。
它更安全、更快、更容易。

$temp = "6c ";    
$weather_report = "It's currently $temp " ; 

$sql = "UPDATE data_weather SET text= ? WHERE period='report'";
$stmt = $pdo->prepare($sql);
$stmt->execute(array($weather_report));

请注意,您不需要引用字符串。事实上,您不能?在占位符周围加上引号。您可以安全地在天气报告字符串中使用撇号。

您可以在通常将单个标量值放在 SQL 表达式中的任何位置使用参数占位符。例如,代替带引号的字符串、带引号的日期或数字文字。但不适用于表名或列名,也不适用于值列表或 SQL 关键字。

于 2013-04-16T16:44:39.103 回答
-1

虽然比尔已经回答了这个问题,但我想补充一下:

不要将命名参数与 TEXT 列一起使用,至少不要与 MySQL 一起使用。它行不通。请改用问号。

于 2016-07-17T18:21:47.827 回答