脚本仅在一个系统上提供数据库错误

时间:2017-10-20 08:20:31

标签: mysql database perl centos

我是VOIP管理员,我有更新Perl中的目录数据库的脚本,这是在我受雇之前从供应商那里购买的。

该脚本在除一个服务器之外的所有服务器上都能正常运行。

// Find the document and store it in a variable
doc = db.movies.findOne({_id: ObjectId("5dd45467d55f4d2d2a115502")})

// Give a convenient new _id
doc._id = 1

// Insert the document using the new _id
db.movies.insert(doc)

// Now we will be having two documents for the same movie, so remove the old one
db.movies.remove({_id: ObjectId("5dd45467d55f4d2d2a115502")})

现在我在执行时遇到了下面提到的错误。

  

DBD :: mysql :: st执行失败:您的SQL语法出错;   查看与您的MySQL服务器版本相对应的手册,以便在“Office”附近使用正确的语法,'')在第12行的./directory第39行的第1行上重新启动hub ='''。

我还将其从具有相同MySQL版本的其他服务器替换为完美的。

请指导我。

1 个答案:

答案 0 :(得分:1)

感谢您的代码。这是我怀疑的;你真的不应该直接在SQL语句中插入值

将第37,38和39行改为此,它应该适合您

$query = 'INSERT INTO directory (extension, name, hub) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE hub = ?';
$sth   = $dbh->prepare($query);
$sth->execute( trim($_), trim($vars[0]), $hubname, $hubname );

请注意代码库中其他地方可能存在同样的问题,所以它应该完全被审查