مشكلة فى كود الادخال 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."')")
4 إجابات
لحل اى مشكلة لها علاقة باستعلام عليك عمل echo للاستعلام بعد تمرير المتغيرات به وتمريره على phpmyadmin وهو هيظهر لك الغلط فين .. او استخدم دالة Mysql_error وحطها فى شرط فى نفس سطر الاستعلام يعنى حاجة زى كدة
mysql_query("الاستعلام هنا") or die(mysql_error()); بواسطة: molhm 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا مشكور للاخوة لا استطيع ان احكم الا اذا رايت الاستعلام بعد تمريره على الدوال وهى يرى المتغيرات على انها متغيرات ام لا
سبقنى 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 4 من 4 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا هذا ما اتحدث عنه هههههه تستحقى التقييم :-)
السلام عليكم ، لدى حل جذرى لك وهى دالة تغنيك عن فعل هذا
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 4 من 4 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا
جرب هكذا
mysql_query("INSERT INTO news (title,text,catid,supcat) VALUES ('{$t}','{$cont}','{$type}','{$pre}')"); بواسطة: علاء 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا |
المشكلة في الكود الاول انك حولت المتغيرات الى رموز بمعنى انك لم تستخدم المتغير $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