-7

不知道为什么,在我使用函数 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

谢谢你能帮助我。

4

2 回答 2

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

编辑:

再多提一个建议,绝对尝试为您的表找到另一个名称,使用保留字作为表名,这会招来各种麻烦。

于 2012-07-06T07:49:44.060 回答
-1

我认为上面的帖子是对的。$sql="UPDATE orderSET invoice_pbb='".$invoice."' WHERE order_id=108";

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

或者,

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

于 2012-07-06T07:25:27.090 回答