不确定为什么,在我使用函数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
谢谢你能帮助我。
答案 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读取字符。
或者,
您可以检查数据库中的数据类型,长度等