【问题标题】:My query cannot update into database after using function substr() [closed]使用函数 substr() 后,我的查询无法更新到数据库中 [关闭]
【发布时间】:2012-07-06 15:11:55
【问题描述】:

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

如果你能帮助我,谢谢。

【问题讨论】:

  • if (!$result) die(mysql_error()); - 这有什么表现吗?
  • 请显示错误。使用@deceze 的方法这样做
  • echo $sql 并在您的 MySQL gui 中运行它。你的答案就在那里。
  • 我尝试了您的代码并回显了$sql 并得到了UPDATE `order` SET invoice_pbb='0000000000GL17KWJ108' WHERE order_id=108,不确定您那边出了什么问题
  • 试试 print_r($invoice); - 似乎 substr 返回 false,在这种情况下,您可能想要重新命名、重新编写和重新标记您的问题,因为这与 mysql 无关。如果它返回正确的值,那么我唯一能想到的就是某种奇怪的编码问题。

标签: php mysql


【解决方案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);

编辑:

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

【讨论】:

  • 谢谢,现在我知道怎么了
  • @ruslyrossi - 我们都很好奇问题是什么,请您简要描述一下您是如何解决的吗?
  • 所有数据都来自表单,包括发票、信用卡等,然后传递到银行并再次传递到我的网站,我忘记再次发送表单以获取新数据的问题,我只是刷新此页面希望所有数据都可以更新,但我错了..但是对于error_reporting(E_ALL);都告诉我不要使用 $result 两次..现在一切正常..对不起家伙
【解决方案2】:

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

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

或者,

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

【讨论】:

  • ... 双引号字符串旨在读取放置在其中的任何变量。这根本不会改变任何事情。
  • @Shelim 抱歉还是不行,你认为这个问题是因为值来自 substr() 函数吗?当我尝试使用 $invoice = '0000000000GL17KWJ108';没有问题的数据库将更新。
  • 另外,您删除了“订单”周围的勾号,因此您可能还会遇到语法错误。
  • 我可以知道这个字段使用的数据类型吗?
  • @Braiba without ticks 也允许在 mysql.ticks ``仅用于安全原因,如 mysql 注入
猜你喜欢
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多