无法弄清楚php插入

时间:2017-01-06 20:43:54

标签: php html mysql

第一部分来自我的updatecompany.php页面,这是寻找要更新或显示的传递的变量。

我一直收到没有设置身份证的错误,我不能为我的生活找出错误的地方。任何帮助都会很棒!

if (isset($_POST["id"]) && is_numeric($_POST["id"])){
 $id = $_POST["id"];
 $vid = \Fr\LS::getCompany("id", $id);
 $vname = \Fr\LS::getCompany("name", $id);
 $vlogo = \Fr\LS::getCompany("logo", $id);
 $vinfo = \Fr\LS::getCompany("info", $id);
 $vsite = \Fr\LS::getCompany("site", $id);
 $vest = \Fr\LS::getCompany("est", $id);
}elseif ( isset($_POST["update"]) ){
  \Fr\LS::updateCompany(array(
  "name" => $_POST["name"],
  "logo" => $_POST["logo"],
  "info" => $_POST["info"],
  "site" => $_POST["site"],
  "est" => $_POST["est"]),
  $_POST["idnum"]);
echo "<center>Company updated!";
echo "<br><a href='updatecompany.php" . $_POST["idnum"] ."'>go back</a></center>";
}else {
  die("No server with that id.");
}

这是来自我的函数包含。

public static function updateCompany($toUpdate = array(), $company = null){
 self::construct();
 if( is_array($toUpdate) && !isset($toUpdate['id']) ){
  if($company == null){
    echo "No company ID set!";
  }
  $columns = "";
  foreach($toUpdate as $k => $v){
    $columns .= "`$k` = :$k, ";
  }

  $sql = self::$dbh->prepare("UPDATE companys SET {$columns} WHERE `id` = :id");
  $sql->bindValue(":id", $company);
  foreach($toUpdate as $key => $value){
    $value = htmlspecialchars($value);
    $sql->bindValue(":$key", $value);
  }
  $sql->execute();

}else{
  return false;
}
}

以下是错误。

  

2017/01/06 16:39:19 [错误] 9682#9682:* 2752在stderr发送的FastCGI:   &#34; PHP消息:PHP注意:未定义的索引:logo in   第17行的/xxx/xxx/xxxxxxxxxxx/master/updatecompany.php PHP消息:   PHP注意:未定义的索引:idnum in   第21行的/xxx/xxx/xxxxxxxxxxx/master/updatecompany.php PHP消息:   PHP致命错误:未捕获的异常&#39; PDOException&#39;与消息   &#39; SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在&#39; WHERE id =附近使用正确的语法   NULL&#39;在第1行&#39;在/xxx/xxx/xxxxxxxxxxx/inc/inc.php:917堆栈跟踪:

     

0 /xxx/xxx/xxxxxxxxxxx/inc/inc.php(917):PDOStatement-&gt; execute()

     

1 /xxx/xxx/xxxxxxxxxxx/master/updatecompany.php(21):Fr \ LS :: updateCompany(Array,NULL)

     

2 {main}在第917行&#34; /xxx/xxx/xxxxxxxxxxx/inc/inc.php中抛出从上游读取响应头时,客户端:75.189.195.82,

     

服务器:www.xxxxxxxx.com,请求:&#34; POST /master/updatecompany.php   HTTP / 1.1&#34;,上游:&#34; fastcgi:// unix:/var/run/php5-fpm.sock:&#34;,主持人:   &#34; www.xxxxxxxx.com&#34;,推荐人:   &#34; http://www.xxxxxxxx.com/master/updatecompany.php&#34;

这是html表单

<form action="updatecompany.php" method='POST'>
<div class="form-group">
  <label for="ID">ID:</label>
  <input name="idnum" type="" class="form-control" id="" value="<?php echo $vid; ?>" disabled>
</div>
<div class="form-group">
  <label for="Name">Name:</label>
  <input name="name" type="" class="form-control" id="name" value="<?php echo $vname; ?>">
</div>
<div class="form-group">
  <label for="Logo">Logo:</label>
  <input type="" class="form-control" id="logo" value="<?php echo $vlogo; ?>">
</div>
<div class="form-group">
  <label for="Info">Info:</label>
  <textarea name="info" class="form-control" rows="5" id="info"><?php echo $vinfo; ?></textarea>
</div>
<div class="form-group">
  <label for="Site">Site:</label>
  <input name="site" type="" class="form-control" id="site" value="<?php echo $vsite; ?>">
</div>
<div class="form-group">
  <label for="EST">EST:</label>
  <input name="est" type="" class="form-control" id="est" value="<?php echo $vest; ?>">
</div>
<button type="submit" value="update" name="update" id="update" class="btn btn-lg btn-primary">Save</button>
</form>

1 个答案:

答案 0 :(得分:1)

初看起来就是这个

$columns = ""; foreach($toUpdate as $k => $v){ $columns .= " $ {ķ{1}}

正在生成类似这样的内容

  `name` =:name,`foo` =:foo,

最后的尾随逗号会产生错误的SQL。