以下是这种情况。我有form
喜欢
<form id="myform">
<input type="text" name="some_column_name">
<input type="text" name="some_other_column_name">
</form>
实质上是更新数据库中的行。数据库被加载&#34;像JSON
一样在页面上
<script type="text/javascript">
rows = <?php echo json_encode($allRows); ?>;
</script>
当用户点击页面上的项目时,表单将填充来自数据库(MySQL)的相应信息,然后用户可以更新该信息并将更新提交给数据库。
问题在于撇号和其他角色。输入到数据库的文本,如
这里有一些文字
成为
这里有一些文字
将其加载回页面上的input
。
我添加和更新数据库的程序是
/* Note: Have to break up prepare statement because https://core.trac.wordpress.org/ticket/12819 */
$addQuery = $wpdb->prepare("INSERT INTO projs (compname,projname,imageurl,sumsmall,sumfull,results,caseid=" . $caseid . ",hide) VALUES (%s,%s,%s,%s,%s,%s,%d,%d)",
array($compname, $projname,$imageurl,$sumsmall,$sumfull,$results,$hide));
$message .= $wpdb->query($addQuery)
? 'Successfully added project to the database.'
: 'Error occurred when trying to add project to database: ' . $wpdb->last_error;
和
/* Note: Have to break up prepare statement because https://core.trac.wordpress.org/ticket/12819 */
$updateQuery = $wpdb->prepare("UPDATE projs SET compname=%s,projname=%s,imageurl=%s,sumsmall=%s,sumfull=%s,results=%s,caseid=" . $caseid . ",hide=%d WHERE id=%d",
array($compname, $projname, $imageurl, $sumsmall, $sumfull, $results, $hide, $id));
$message .= $wpdb->query($updateQuery) !== false
? 'Successfully updated project.'
: 'Error occurred when trying to update project in database: ' . $wpdb->last_error;
break;
我觉得WordPress的$wpdb->prepare
搞砸了东西,或者我误用了它或什么东西。
答案 0 :(得分:0)
这里有两个可能的问题。你有magic_quotes ON,它会将\添加到任何可能导致SQL注入的字符,例如&#39;和&#34;或者你的准备声明正在添加它。 在这种情况下,并且没有太多可用的额外信息,我很想相信您的PREPARE声明是&#34;消毒&#34;输入以及你看到这些价值观的原因。
我希望这会有所帮助。