Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 撇号不发送到数据库_Php_Html_Mysql - Fatal编程技术网

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());
}