PDA

View Full Version : مشکل در درج داده در دیتابیس



esteftaats1368
سه شنبه 26 شهریور 1392, 17:35 عصر
ویرایش : مشکل برطرف شد

سلام دوستان.

راستش می خوام یه مقداری رو در دیتابیس وردپرس بصورت دستی درح کنم ولی مشکل دارم.

ممنون میشم کد زیر رو یه نگاهی بندازین.



$db = mysql_connect("localhost","root","");
if ($db)
{
$sdb = mysql_select_db('wp',$db);
if($sdb)
{
$sql = "INSERT INTO wp_posts (post_title,post_content,post_name,post_date,post_ date_gmt,post_modified,post_modified_gmt,post_auth or,post_status) VALUES ('title2','".$post."','post_name2',now(),now(),now(),now(),1,'publish' )";
echo "your data registered";
$result = mysql_query($sql, $db)or die( mysql_error() );
}
else
{
echo"database not found";
}
}
else
{
echo"not connected to mysql";
}
$cdb = mysql_close($db);



البته خودم یدونم این قسمت پایینی که قرمزه رو اشتباه نوشتم اما نمی دونم باید بجاش چی بنویسم.
$sql = "INSERT INTO wp_posts (post_title,post_content,post_name,post_date,post_ date_gmt,post_modified,post_modified_gmt,post_auth or,post_status) VALUES ('title2','".$post."','post_name2',now(),now(),now (),now(),1,'publish')";
اون متغیر ، متغیری هست که از قبل یه مقداری داره که اون مقدار رو توی این کد نذاشتم.

افشین66
سه شنبه 26 شهریور 1392, 18:38 عصر
اول بگو خطا چی میده !!!! ساختار جدولتم بگذار تا مشکلت حل کنیم هحتمالا فیلد ها رو درست ست نمی کنی !!!!

ابوذر محمودی
سه شنبه 26 شهریور 1392, 18:48 عصر
بله به قول دوستمون شما خطا رو بذارین تا ببینیم اصلا از چی ایراد میگیره .

ضمن اینکه فقط همونجایی که قرمز نوشتین و میگین اشتباس همونجا فقط درسته !!!!
چون مثلا تو فیلد اول عیناً "title2" ریخته میشه ، اگه متغیره که باید $ بذاری ؛ یعنی دقیقا باید مثل $post تو کوئری بذاری ، همون کاری که واسه post$ انجام دادی واسه بقیه هم انجام بده.


('".$title2."','".$post."','".post_name2."',now(),now(),now (),now(),1,'".$publish."')";

esteftaats1368
سه شنبه 26 شهریور 1392, 20:36 عصر
http://s3.picofile.com/file/7940064080/Untitled2.pnghttp://s3.picofile.com/file/7927137953/Untitled.png


your data registeredYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'news_detail_text' > یک مجله استرال' at line 1

esteftaats1368
چهارشنبه 27 شهریور 1392, 09:41 صبح
یعنی کسی بلد نیست؟

افشین66
چهارشنبه 27 شهریور 1392, 12:24 عصر
این کوئری که شما اینجا گذاشتی


$sql = "INSERT INTO wp_posts (post_title,post_content,post_name,post_date,post_ date_gmt,post_modified,post_modified_gmt,post_auth or,post_status) VALUES ('title2','".$post."','post_name2',now(),now(),now (),now(),1,'publish')";


فیلدهای جدولش با کوئریت همخوانی نداره !!!! مثلا شما اسم فیلد برای ذخیره تو کوئریت نوشتی post_ date_gmt در صورتی که باید این بنویسی

post_date_gmt


من پیشنهاد می کنم یک اینسرت دستی تو phpmyadmin انجام بده کوئریش بنا به نیارت تغییر بده!!!!!

esteftaats1368
چهارشنبه 27 شهریور 1392, 13:09 عصر
این کوئری که شما اینجا گذاشتی


$sql = "INSERT INTO wp_posts (post_title,post_content,post_name,post_date,post_ date_gmt,post_modified,post_modified_gmt,post_auth or,post_status) VALUES ('title2','".$post."','post_name2',now(),now(),now (),now(),1,'publish')";


فیلدهای جدولش با کوئریت همخوانی نداره !!!! مثلا شما اسم فیلد برای ذخیره تو کوئریت نوشتی post_ date_gmt در صورتی که باید این بنویسی

post_date_gmt


من پیشنهاد می کنم یک اینسرت دستی تو phpmyadmin انجام بده کوئریش بنا به نیارت تغییر بده!!!!!
داداش هر دو تا post_date_gmt که نوشتی یکی هستش که!

توی phpmyadmin دستی وارد کردم مشکلی نداشته.

افشین66
چهارشنبه 27 شهریور 1392, 16:04 عصر
اگر دقت کنی توی کوئری که گذاشت بین post_ و data چندت کارکتر space هست که باعث تفوت میشه !!!! کوئری که دستی وارد کردی بگذار اینجا فیلدهای اضافیش حذف کنیم !!! کوئری که تو می خوای دربیاریم :)

esteftaats1368
چهارشنبه 27 شهریور 1392, 16:33 عصر
اگر دقت کنی توی کوئری که گذاشت بین post_ و data چندت کارکتر space هست که باعث تفوت میشه !!!! کوئری که دستی وارد کردی بگذار اینجا فیلدهای اضافیش حذف کنیم !!! کوئری که تو می خوای دربیاریم :)
داداش شاید من توی کد قبلی اشتباهی یه space اضافی گذاشته باشم ولی توی کد اصلی این فاصله وجو نداره.اینم از کوئری

//$sql = "INSERT INTO wp_posts (post_title,post_content,post_name,post_date,post_ date_gmt,post_modified,post_modified_gmt,post_auth or,post_status) VALUES ('title2','".$post."','post_name2',now(),now(),now(),now(),1,'publish' )";


راستی داداش یه نکته ای هم هست که وقتی به $post مقدار دیگه ای دادم توی دیتابیس اطلاعات رو درج کرد ولی وقتی داده اصلی رو دادم درح نکرد.

داده اصلی کد html هست مثل کد زیر :



<div class='news_detail_text' > <div>یک مجله استرالیایی این سوپر مدل را به عنوان زیباترین شخص 2012 معرفی کرده است . او اخیرا برای برند&nbsp; ریبوک یک لباس ورزشی زنانه را تبلیغ کرده است و عکسهایی برای این تبلیغات گرفته شده است که نشان می دهد این عنوان واقعا برازنده وی است.</div> <div>&nbsp;</div> <div>به گزارش <a href="http://www.irannaz.com" title="http://www.irannaz.com">ایران ناز</a> او اکنون مادر دو فرزند است . با این حال تناسب اندام و انعطاف پذیری فوق العاده اش وی را به یک اسطوره در دنیای مد تبدیل کرده است.</div> <div>&nbsp;</div> <div style="text-align: center;"><a href="http://www.irannaz.com/news_cats_3.html" ><img border="0" src="http://www.irannaz.com/user_files/image/image45/0.998324001333992954.www.irannaz.com.jpg" alt="آشنایی با زیباترین و جذابترین زن معروف جهان +عکس" title="آشنایی با زیباترین و جذابترین زن معروف جهان +عکس" /></a></div> <div>&nbsp;</div> <div>او اکنون 28 ساله است و اخیرا تصویری از او به همراه پسر کوچک خود به نام فیلین روی جلد یک مجله پرتیراژ به چاپ رسیده است. وی در مصاحبه اش با این مجله گفته است روزی 18 ساعت کار میکند که بخش عمده آن حرکات ورزشی است.<br /> &nbsp;<br /> او همسر اورلاندو بلوم هنرپیشه معروف هالیوودی است و می گوید در درجه اول دوست دارد وظیفه همسری و مادری خود را به خوبی اجرا کند و سپس در کار و فعالیت مورد علاقه اش بپردازد. این دومین بار است که وی به عنوان زیباترین زن دنیا انتخاب میشود.</div> </div>

ضمنا من اطلاعات رومی خوام در دیتابیس وردپرس بصورت دستی وارد کنم.

از یه طرف شک می کنم نکنه وردپرس فیلتری چیزی گذاشته مقادیری که من می ذارم از " و ' داخلش هست.

افشین66
چهارشنبه 27 شهریور 1392, 18:29 عصر
آره اگر از ' استفاده کنی باعث میشه کوئریت بلکل غلط بشه !!!!! ضمنا اگر خودت چک نکنی احتمال داره کاربر کد مخرب وارد کنه و .....

درباره escape value و sql injection مطالعه کنی به نتیجه میرسی اینم فیلتر نمونه برای متغییرت


function filter($data) { $data = trim(htmlentities(strip_tags($data))); if (get_magic_quotes_gpc()) $data = stripslashes($data); $data = mysql_real_escape_string($data); return $data; }