第一部分来自我的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>
答案 0 :(得分:1)
初看起来就是这个
$columns = "";
foreach($toUpdate as $k => $v){
$columns .= "
$ {ķ{1}}
正在生成类似这样的内容
`name` =:name,`foo` =:foo,
最后的尾随逗号会产生错误的SQL。