使用函数substr()后,我的查询无法更新到数据库

时间:2012-07-06 07:09:53

标签: php mysql

不确定为什么,在我使用函数substr()之后我无法将我的值更新为数据库,当我在数据库中检查没有值(空白)时。

$result = '000603040000000000GL17KWJ10881011215000000000100';
$invoice = substr($result, 8, 20);  //output 0000000000GL17KWJ108

//update
$sql="UPDATE `order` SET invoice_pbb='$invoice' WHERE order_id=108";
$result=mysql_query($sql);  

if($result){
    echo "Successful";
}       
else {
    echo "ERROR";
}

column = invoice_pbb
type = varchar (100)

*如果我用硬编码更改值,我可以更新(不确定原因)。

$invoice = '0000000000GL17KWJ108';

*我正在使用https

谢谢你能帮助我。

2 个答案:

答案 0 :(得分:1)

实际上我在代码中看不到明显的错误,但我不知道上下文,也许这些步骤可以帮助找到错误。

首先,我不会重复使用变量$ result,而是使用新变量。如果某些代码无法执行,这可以避免误解。

$queryResult = mysql_query($sql);

然后最好正确检查结果,因为mysql_query()可以返回混合类型。注意===运算符,您无法使用简单的if语句可靠地检查结果。

if ($queryResult === false)
  echo "ERROR";
else
  echo "Successful";

然后我会打开错误报告,这可能会给你一个关于实际问题的提示。

error_reporting(E_ALL);

在使用$invoice进行查询之前,请检查var_dump($invoice); 确实包含的内容。

{{1}}

修改

只有一个建议,绝对尝试为您的表找到另一个名称,使用保留字作为tablename,会引发各种麻烦。

答案 1 :(得分:-1)

我认为上面的帖子是正确的。 $ sql =“UPDATE order SET invoice_pbb ='”。$ invoice。“'WHERE order_id = 108”;

因为单引号中的变量名称不会呈现任何值,因为它通过characer读取字符。

或者,

您可以检查数据库中的数据类型,长度等