Php 撇号不发送到数据库
我需要你的帮助。今天我看到,如果我把Php 撇号不发送到数据库,php,html,mysql,Php,Html,Mysql,我需要你的帮助。今天我看到,如果我把”(撇号)放在一些单词中,那么这个文本将不会发送到数据库。我尝试删除htmlspecialchars或htmlspecialchars,但没有帮助。请帮我解决这个问题。谢谢 hier是profile.php <?php if(logged_in() === true){ if(empty($_POST['status']) === false && empty($_POST['user_status']) === false){
”
(撇号)放在一些单词中,那么这个文本将不会发送到数据库。我尝试删除htmlspecialchars
或htmlspecialchars
,但没有帮助。请帮我解决这个问题。谢谢
hier是profile.php
<?php
if(logged_in() === true){
if(empty($_POST['status']) === false && empty($_POST['user_status']) === false){
$status_data = array(
'body' => $_POST['status'],
'added_by' =>$user_data['username'],
'date_added' => date('Y-m-d H:i:s'),
'user_posted_to' => $_GET['username'],
'user_id' => $user_data['user_id']
);
update_status($id, $status_data, $user_id);
}
?>
<form class="forma" action="<? echo $username; ?>" method="post" accept-charset="utf8">
<div class="field">
<label for="Status" style="color: #7f7f7f; font-family: Cambria, Hoefler Text, Liberation Serif, Times, Times New Roman, serif;"></label>
<textarea rows="4" cols="50" name="status" placeholder="say something" id="status_area" charset="UTF-8" style=".value:black;"></textarea>
<div class='fild_bottom'>
<input name="user_status" type="submit" value="Post" id="button">
</div>
</div>
</form>
请将代码更改为PDO。举个例子,我指的是这个 将函数更新_状态更改为此(这意味着您已经建立了数据库连接(对象以$db为单位)): 删除函数array_sanitize()和sanitize(),您就不再需要它们了(多亏了PDO和准备好的语句)。此外,如果密钥始终相同且已知,则无需在$status_数据数组上使用数组_密钥 我不知道你为什么要在这个函数中再次选择用户id,因为你已经在$status\u数据中得到了它 编辑:将其放入一个中心文件(您可以在
尝试{
之前设置变量,或者用正确的值替换变量):
您的
sanitize
函数完全错误。您应该仅以实际连接到的格式进行转义。为什么这是带标签的java?请查看addslashes和StripSlashesis如果我将htmlspechialchars
更改为HTMLlentites
是否有效@SLaks@user3722203:不,那同样是错误的了解这些函数的作用。我已更改并删除了array_sanitize
和sanitize
。但出现了致命错误。调用成员函数prepare()是否创建了新的PDO对象以连接到数据库?如果没有,请在中心文件中执行,该文件始终包含在顶部的某个位置(如果还没有,请创建一个)。我已更改。bu将成为更多警告:(我必须将所有代码更改为pdo。我认为这样会更好。我会将所有代码更改为pdo。你能给我发送你的conntact电子邮件或facebook或其他东西与你联系,并告诉你我更改了什么吗?好的。das ist gut.dann bis morgen。我会调用代码zum pdo wechseln.schreibe我会dir morgen.danke für alles.das war sehr Net.and könntestdu Uneser Unterhaltung,die nicht zu den Themen gehört,löschen?@user3722203:虽然帮助者可以分享他们的私人联系方式,如果他们愿意的话,我们倾向于阻止提问者主动寻找他们,因为这通常会导致帮助者成为一个免费的私人支持渠道。如果你想说明一些代码/更改,你已经疯了e、 使用Github的GIST或粘贴板——如果你在这里的公共评论中发布,这意味着其他人也可以发表评论。
function update_status($id, $status_data, $user_id){
$query = @mysql_query('set character_set_results = "utf8"');
$user_id = mysql_query("SELECT * FROM users WHERE user_id = $user_id");
array_walk($status_data, 'array_sanitize');
$fields = '`' . implode('`,`', array_keys($status_data)) . '`';
$bank ='\'' . implode('\', \'', $status_data) . '\'';
mysql_query("INSERT INTO `status` ($fields) VALUES ($bank)");
}
function array_sanitize($item){
$item = htmlentities(strip_tags(mysql_real_escape_string($item)));
}
function sanitize($data){
return htmlspecialchars(strip_tags(mysql_real_escape_string($data)));
}
/* $user_id is unused, you should think about removing it */
function update_status($id, $status_data, $user_id) {
global $db;
$link = $db->prepare("INSERT INTO `status` (`body`, `added_by`, `date_added`, `user_posted_to`, `user_id`) VALUES (?, ?, ?, ?, ?)");
$link->bindvalue(1, $status_data['body']);
$link->bindvalue(2, $status_data['added_by']);
$link->bindvalue(3, $status_data['date_added']);
$link->bindvalue(4, $status_data['user_posted_to']);
$link->bindvalue(5, $status_data['user_id']);
$link->execute();
}
try {
$db = new PDO("mysql:host=".$host.";dbname=".$db.";charset=utf8", $user, $password);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //Stops emulating Prepared Statements
} catch(PDOException $e) {
die("Unable to connect. Error: ".$e->getMessage());
}