لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
مشكلة فى كود الادخال INSERT لقاعدة البيانات
لما يوجد مشكل في الكود التالي

("INSERT INTO news (title,text,catid,supcat) VALUES ('$t','$cont','$type','$pre')")
و لكن عند استعماله هكذا يعمل
("INSERT INTO news (title,text,catid,supcat) VALUES ('".$t."','".$cont."','".$type."','".$pre."')")
تاريخ البداية: 31 / ديسمبر / 2011 الساعة 1:46 اخر نشاط: 3 / يناير / 2012 الساعة 22:30 INSERT

المشكلة في الكود الاول انك حولت المتغيرات الى رموز بمعنى انك لم تستخدم المتغير $t بل استخدمت الكلمة $t
لانك وضعته داخل ''
اما الكود الثاني فأنت فصلت المتغيرات وبذلك سيتم استخدام قيمة المتغير وليس اسم المتغير كما في الكود الاول
31 / ديسمبر / 2011 الساعة 10:49

mysql_query("INSERT INTO news (title,text,catid,supcat) VALUES ($t,$cont,$type,$pre)")
31 / ديسمبر / 2011 الساعة 10:51

اعتقد ان هذا ليس السبب لان علامة التنصيص الفردية داخل علامة تنصيص زوجية وعندما تضع متغير سيراه على انه متغير لان علامة التنصيص الام هى علامة زوجية .. هل جربت وضعهم بداخل اقواس مثل هذا {}
31 / ديسمبر / 2011 الساعة 13:17

لأنني رأيت في أحد شروحات أن الكود في المرة الأولى
اشتغل وهذا الفيديو يوضح اشتغالها
http://www.youtube.com/watch?v=wL1FUTSVIB0&feature=player_embedded#!
هل السبب هو تحديثات البي اتش بي و تم الغاء تلك الطريقة أم ماذا؟
31 / ديسمبر / 2011 الساعة 14:8

منطقيا الكودين يجيب ان يعملو بشكل صحيح
31 / ديسمبر / 2011 الساعة 15:6

نعم هذا ما زاد استغرابي أظن أنه تم منع الطريقة في التحديث الأخير للبي اتش بي
31 / ديسمبر / 2011 الساعة 16:30

اى طريقة تقصد؟
31 / ديسمبر / 2011 الساعة 17:13

أقصد طريقة كتابة الكود في الحالة 1
2 / يناير / 2012 الساعة 13:53

لا اظن ذللك لانه توجد الكثيييير من السكربتات تعمل بهذه الطريقة
3 / يناير / 2012 الساعة 20:41

انا عندي لم تعمل الطريقة 1 اتمنى تجربها عندك حتى نقتل الشك ;)
3 / يناير / 2012 الساعة 22:30

4 إجابات
لحل اى مشكلة لها علاقة باستعلام عليك عمل echo للاستعلام بعد تمرير المتغيرات به وتمريره على phpmyadmin وهو هيظهر لك الغلط فين .. او استخدم دالة Mysql_error وحطها فى شرط فى نفس سطر الاستعلام يعنى حاجة زى كدة
mysql_query("الاستعلام هنا") or die(mysql_error());

بواسطة: molhm
منذ: 31 / ديسمبر / 2011 الساعة 2:17

مشكور للاخوة
بس استفساري هو حول لما الكود لا يعمل في الحالة الاولى و يعمل في الحالة الثانية
31 / ديسمبر / 2011 الساعة 4:9

لا استطيع ان احكم الا اذا رايت الاستعلام بعد تمريره على الدوال وهى يرى المتغيرات على انها متغيرات ام لا
31 / ديسمبر / 2011 الساعة 10:48

سبقنى MacOS بوضع دالة شبيهة بما كنت انويه ولكنى سوف اضيف شىء جديد وهو اضافة وحذف وتحديث ، اليك الدوال

دالة الاضافة

function dbRowInsert($table_name, $form_data)
{
    // retrieve the keys of the array (column titles)
    $fields = array_keys($form_data);

    // build the query
    $sql = "INSERT INTO ".$table_name."
    (`".implode('`,`', $fields)."`)
    VALUES('".implode("','", $form_data)."')";

    // run and return the query result resource
    return mysql_query($sql);
}

دالة الحذف

function dbRowDelete($table_name, $where_clause='')
{
    // check for optional where clause
    $whereSQL = '';
    if(!empty($where_clause))
    {
        // check to see if the 'where' keyword exists
        if(substr(strtoupper(trim($where_clause)), 0, 5) != 'WHERE')
        {
            // not found, add keyword
            $whereSQL = " WHERE ".$where_clause;
        } else
        {
            $whereSQL = " ".trim($where_clause);
        }
    }
    // build the query
    $sql = "DELETE FROM ".$table_name.$whereSQL;

    // run and return the query result resource
    return mysql_query($sql);
}

دالة التحديث

function dbRowUpdate($table_name, $form_data, $where_clause='')
{
    // check for optional where clause
    $whereSQL = '';
    if(!empty($where_clause))
    {
        // check to see if the 'where' keyword exists
        if(substr(strtoupper(trim($where_clause)), 0, 5) != 'WHERE')
        {
            // not found, add key word
            $whereSQL = " WHERE ".$where_clause;
        } else
        {
            $whereSQL = " ".trim($where_clause);
        }
    }
    // start the actual SQL statement
    $sql = "UPDATE ".$table_name." SET ";

    // loop and build the column /
    $sets = array();
    foreach($form_data as $column => $value)
    {
         $sets[] = "`".$column."` = '".$value."'";
    }
    $sql .= implode(', ', $sets);

    // append the where statement
    $sql .= $whereSQL;

    // run and return the query result
    return mysql_query($sql);
}

جربهم وان ظهرت اى مشكلة ، سنحلها باذن الله

بواسطة: Dina
منذ: 31 / ديسمبر / 2011 الساعة 2:4

هذا ما اتحدث عنه هههههه تستحقى التقييم :-)
31 / ديسمبر / 2011 الساعة 2:5

السلام عليكم ، لدى حل جذرى لك وهى دالة تغنيك عن فعل هذا
function insert($info, $table) {
    if (!is_array($info)) { 
        return false;
    }

    $sql = "INSERT INTO `{$table}` (";
    
    for ($i=0; $i<count($info); $i++) {
        $sql .= key($info);
        if ($i < (count($info)-1)) {
        $sql .= ", ";
        } else $sql .= ") ";
        next($info);
    }
     reset($info);
     $sql .= "VALUES (";
     for ($j=0; $j<count($info); $j++) {
        $sql .= "'".current($info)."'";
        if ($j < (count($info)-1)) {
           $sql .= ", ";
        } else $sql .= ") ";
        next($info);
     }
     mysql_query($sql) or die("query failed ".mysql_error());
         return mysql_insert_id();
}
مثال لاستعمالها
$info = array("title" => $t, "text" => $cont, "catid" => $type, "catid" => $pre);
// سوف يدخل لك البيانات وترجع لك ايضا رقم المدخل
$id = insert($info, "news");

بواسطة: MacOS
منذ: 31 / ديسمبر / 2011 الساعة 1:58

جرب هكذا
mysql_query("INSERT INTO news (title,text,catid,supcat) VALUES ('{$t}','{$cont}','{$type}','{$pre}')");

بواسطة: علاء
منذ: 31 / ديسمبر / 2011 الساعة 1:51

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة