سؤال

لقد كنت أفعل بعض القراءة على mysqli_real_escape_string ()، وبعد الحصول على محتوى هرب بشكل صحيح، أواجه مشكلة في الحصول عليها بشكل صحيح عندما أسحبها مرة أخرى.

إليك الرمز الذي لدي:

function update_section_content() {
    $name = mysqli_real_escape_string($this->conn, $_POST['name']);
    $text = mysqli_real_escape_string($this->conn, $_POST['content']);

    // First, we do an update
    $update_query = "UPDATE sections SET content = ? WHERE name = ?";
    if($update_stmt = $this->conn->prepare($update_query)) {
        $update_stmt->bind_param('ss', $text, $name);
        $update_stmt->execute();
        // If the update was successful, read in what we just updated
        if($update_stmt->affected_rows == 1) {
            $read_query = "SELECT content FROM sections WHERE name = ?";
            if($read_stmt = $this->conn->prepare($read_query)) {
                $read_stmt->bind_param('s', $name);
                    $read_stmt->execute();
                $read_stmt->bind_result($content);
                if($read_stmt->fetch()) {
                    echo nl2br($content);
                }
            }
        }
        $read_stmt->close();
        $update_stmt->close();
}

كان أملك في الكود التالي أنه سيقوم بتحديث سجل وهروب أي شخصيات سيئة، ثم، عند النجاح، اقرأ استعادة الاستعلام المحدثة مع الحفاظ على سلامة البصرية السابقة. (أي، أود أن يرصد هذا المحتوى في Textarea لعرض خطوط جيولا ولا علامات BR.)

لسوء الحظ، اعتبارا من الآن، ما زلت أحصل على أحرف جديدة تظهر بعد الهروب. ماذا ينقصني؟

شكرا جزيلا على وقتك، وأي نصيحة مقدمة موضع تقدير كبير.

لسوء الحظ، هذا ليس هو الحال. ما زلت أحصل على أحرف نيولين

هل كانت مفيدة؟

المحلول

نظرا لأنك تستخدم البيانات المعدة، يجب ألا تفلت أيضا من سلاسلك.

String Espaping مخصص عندما تقوم بتضمين القيم في سلسلة استعلام SQL نفسها، ولكن باستخدام البيانات المعدة، فإنك تتجنب حق القيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top