我是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版本的其他服务器替换为完美的。
请指导我。
答案 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 );
请注意代码库中其他地方可能存在同样的问题,所以它应该完全被审查