我正在尝试使用大约1200行的完整HTML代码更新内容数据库(Joomla)的介绍字段。
try {
$MyDBConn = new PDO("mysql:host=localhost;port=3306;dbname=$MyDBName", $MyDBUser, $MyDBPass);
// PDO can throw exceptions rather than Fatal errors, so let's change the error mode to exception
$MyDBConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$MySQL = "UPDATE jso_content SET introtext = '$MyTeamHTML_FR' WHERE titel like '%$MyTeamTitel' and alias like '%$MyTeamAlias'";
$MySQL = "UPDATE jso_content SET introtext = :INTRO WHERE alias = :ALIAS";
$MyStmt = $MyDBConn->prepare($MySQL);
$MyStmt->execute(array(':INTRO' => $MyTeamHTML_FR, ':ALIAS' => $MyTeamAlias));
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage()."\n";
}
$MyDBConn = null;
更新并不严格,我不知道为什么。 当我通过PHPMyAdmin手动执行此操作时,我可以插入文本代码。
我在之前的帖子中使用了相同的语句,并且由于使用exec()而不是execute()时出现错误而解决了这个问题。
另一个评论是SQL注入攻击,我希望我解决了。
感谢您的支持
此致
劳伦
答案 0 :(得分:0)
我稍微更改了您的代码并添加了用于记录异常的代码。这将帮助您在发生错误时进行调试并解决它。
try {
$MyDBConn = new PDO("mysql:host=localhost;port=3306;dbname=$MyDBName", $MyDBUser, $MyDBPass);
// PDO can throw exceptions rather than Fatal errors, so let's change the error mode to exception
$MyDBConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$MySQL = "UPDATE jso_content SET introtext = '$MyTeamHTML_FR' WHERE titel like '%$MyTeamTitel' and alias like '%$MyTeamAlias'";
$MySQL = "UPDATE jso_content SET introtext = :INTRO WHERE alias = :ALIAS";
$MyStmt = $MyDBConn->prepare($MySQL);
$MyStmt->execute(array(':INTRO' => $MyTeamHTML_FR, ':ALIAS' => $MyTeamAlias));
}
catch(PDOException $e) {
$h = fopen('<path_to_a_writable_dir>/error.log', 'a+');
fwrite($h, var_export($e, true));
echo "Connection failed: " . $e->getMessage()."\n";
}
$MyDBConn = null;
确保为path_to_a_writable_dir
答案 1 :(得分:0)
对不起该帖子。我后来才意识到,我在
中输入了一个拼写错误"UPDATE jso_content SET introtext = :INTRO WHERE alias = :ALIAS"
这应该是bw
"UPDATE jos_content SET introtext = :INTRO WHERE alias = :ALIAS"
更改后,脚本通过了。
无论如何,谢谢你的评论 干杯 劳伦