【问题标题】:php sqlsrv - field not updatingphp sqlsrv - 字段未更新
【发布时间】:2016-08-25 12:33:31
【问题描述】:

我想从名为 Leave Request 的表中更新两个字段,但是当我点击提交按钮时。

 <?php 
$stmt = $pdo->prepare('UPDATE dbo.[TABLE$Leave Request] dbo.[KPMG$Leave Request].supAprrove_date=?,dbo.[TABLE$Leave Request].supAprrove=? WHERE     dbo.[TABLE$Leave Request].id=?');
$stmt->execute(array($adate, $approve, $id));

$adate = $_POST['supAprrove_date'];
 $approve =$_POST['supAprrove'];
$id = $_POST['lid'];
 //$affected_rows = $stmt->rowCount();

?>
<form id="form1" name="form1" method="post" action="pending_leave.php">
  <label>
  <select name="supAprrove" id="supAprrove">
    <option value="1">Approve</option>
    <option value="2">Reject</option>
  </select>
  </label>
  <input name="supAprrove_date" type="hidden" id="supAprrove_date" value="<?php echo date('Y-m-d'); ?>" />
  <input type="hidden" name="lid" id="lid"  value="<?php echo $data['id'];  ?>"/>
  <label>
  <input type="submit" name="button" id="button" value="Submit" />
  </label>
</form>

【问题讨论】:

  • 数据库表是这样命名的
  • 你得到的错误是什么?您似乎没有处理来自sqlsrv 的任何错误。请检查sqlsrv_errors 的使用情况。此外,SETUPDATE dbo.[TABLE$Leave Request] 之后丢失。

标签: php pdo sqlsrv


【解决方案1】:

创建 SQL UPDATE 语句的一种方法是

UPDATE table
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions];

例子:

UPDATE employees
SET last_name = 'Johnson'
WHERE employee_id = 10;

您正在使用准备好的语句,因此将“Johnson”部分替换为“?”你就完成了。

对于错误处理,您可以使用:

$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION部分是抛出异常的关键。

有关 PDO 错误处理的更多信息:http://php.net/manual/en/pdo.error-handling.php

【讨论】:

  • 我用类似 $_POST['name'] 的 post 变量替换了名称“Johson”,但它不起作用
  • 很好,但我认为您的查询有误,因此请尝试更改查询。而且我会更改表名,因此单词之间没有空格,这也不是最佳做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
相关资源
最近更新 更多