【问题标题】:A non well formed numeric value encountered php遇到 php 格式不正确的数值
【发布时间】:2013-05-27 07:32:12
【问题描述】:

我从数据库中传递日期并设置 dateforService 的值,然后我将 URL 值发送到另一个 php 文件以更新数据库。但是每次我尝试在数据库中保存时,它都会保存为 0000-00-00。

代码如下:

echo "<td><input type= 'text' name = 'jobrequestnumber' value =".$row['jobrequestnumber']."></td>"  ; // results in the same jobrequestnumbers
echo "<td><input type= 'text' name = 'requestingcompany' value =".$row['requestingcompany']."></td>"    ;//this too
echo "<td><input type= 'date' name = 'dateforService' value =".$row['dateforService']."></td>"  ;// this one also 
echo "<td><a href=\"update_request.php?jobrequestnumber={$row['jobrequestnumber']}&requestingcompany={$row['requestingcompany']}&dateforService={$row['dateforService']}\">Update</a></td>";

所以我尝试在以下更新代码之前回显该值: 然后它以正确的日期格式出现。

if (empty($errors)){
$jobrequestnumber = $_GET['jobrequestnumber'];
$requestingcompany = $_GET['requestingcompany'];
$dateforService = date("Y-m-d", strtotime($_GET['dateforService']));
    $query =    "UPDATE jobrequest SET 
                        requestingcompany = '{$requestingcompany}',
                        dateforService = $dateforService 
                    WHERE jobrequestnumber ={$jobrequestnumber}";

非常感谢您的建议,非常感谢。

【问题讨论】:

  • 在将来自 GET 的输入传递给您的查询之前验证它们!目前它对 SQL 注入攻击是开放的。什么给了你var_dump($dateForService);
  • dateforService = $dateforService 应该是 'dateforService = '$dateforService' 需要 "'" 围绕它

标签: php


【解决方案1】:

替换

dateforService = $dateforService 

dateforService = '$dateforService'

以防万一

替换

jobrequestnumber ='$jobrequestnumber' // remove { & }. You are not using an array here. And add quotes around it

【讨论】:

  • 你知道单引号代表 literal 值吗?
  • 当然是@FreshPrinceOfSO,但整个语句都放在双引号 (") 内,对吗?
  • 我的错,你是对的。但在这种情况下,OP 需要使用准备好的语句。
  • 谢谢。但是为什么我们需要将日期值替换为引用值?不是把它当作字符串而不是日期值吗?
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 2012-07-28
  • 2014-09-18
相关资源
最近更新 更多