PDA

View Full Version : مشکل در insert



baran.f.a
چهارشنبه 19 آذر 1393, 10:13 صبح
سلام من به یک مشکل عجیب برخوردم نمی تونم یه insert ساده رو انجام بدم واقعا اشکال کارمو متوجه نمی شم کدمو می زارم لطفا کمکم کنید خیلی مهمه .
من تو تمام فرمام دچار این مشکل شدم قبلا insert می شدن ولی حالا نه . باید چیکار کنم لطفا راهنماییم کنید.




<form method="get" action="missing_device.php">
<fieldset dir="rtl" style="width:1000px; height:150px; margin-top:30px; margin-left:190px;"><legend><font size="3" style="font-weight:bold" color="#333333">&nbsp;&nbsp;دستگاه مفقودی&nbsp;&nbsp;</font></legend>
</br></br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<label id="merchant_login">کد پذیرنده :</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="merchant_id"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label id="merchant_login">شماره سریال :</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="serial_code"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

</fieldset>
<input type="submit" value="انصراف" style="margin-left:600px; margin-top:50px; width:100px; height:30px; background: #8CED7E url(images/1418132743_1709.ico) no-repeat center left; padding-left: 16px;">
<input type="submit" name="save" value="ثبت" style=" margin-top:20px; width:100px; height:30px; background: #8CED7E url(images/1418133310_gtk-save-as.png) no-repeat center left; padding-left: 16px;" >
</form>
<?php
if (isset($_GET['save'])){
require_once 'connect.php';
connecttodb();
mysql_query('SET NAMES utf8');

$merchant= $_GET['merchant_id'];
$serial=$_GET['serial_code'];

$ins = "INSERT INTO missing_device (serial_code,merchand_id) VALUES ('$serial','$merchant')";
$saved=mysql_query($ins );
if($saved){


die("<meta http-equiv='refresh' content='0; url=missing_device.php '> ");
}


}
?>

.fatemeh
چهارشنبه 19 آذر 1393, 10:37 صبح
$saved=mysql_query($ins ) or die(mysql_error());
این دستور رو بزارید تا خطا مشخص بشه.

hsgpro
چهارشنبه 19 آذر 1393, 11:01 صبح
سلام
اولاً پیشنهاد میکنم به جای توابع mysql از mysqli یا pdo استفاده کنید.توابع mysql خیلی وقته منسوخ شدند.
دوماً شما مستقیم اطلاعات رو از متد GET گرفتید و بدون escape کردن می خواین ذخیره کنید تو دیتابیس این باعث میشه که سایت شما مورد حمله SQL Injection یا تزریق SQL قرار بگیره.یعنی توی متد GET کاربر به جای متنی که باید باشه یه Query دیتابیس می نویسه و مثلاً کل دیتابیس شما رو حذف میکنه.برای جلوگیری از این اتفاق باید متغیر ها رو هر کدوم یک بار با تابع mysql_real_escape_string اجرا کنید تا escape بشن.اما باز پیشنهاد میکنم تو متن تابع ها به جای mysql از mysqli استفاده کنید یعنی همین تابع هم میشه mysqli_real_escape_string.

برای مشل Insert نشدنتون هم query رو به شکل زیر تغییر بدید ببینید درست میشه:

INSERT INTO `missing_device` (`serial_code`, `merchand_id`) VALUES ('$serial', '$merchant')

sairon123
چهارشنبه 19 آذر 1393, 12:21 عصر
این کد رو امتحان کردم ، کامل اجرا میشه ، کد تست شده


<form method="get" action="">
<fieldset dir="rtl" style="width:1000px; height:150px; margin-top:30px; margin-left:190px;"><legend><font size="3" style="font-weight:bold" color="#333333">دستگاه مفقودی</font></legend>
</br></br>

<label>کد پذیرنده :</label>
<input type="text" name="merchant_id"/>

<label>شماره سریال :</label>
<input type="text" name="serial_code"/>

</fieldset>
</br></br>
<input type="submit" value="انصراف" style="margin-left:600px; margin-top:50px; width:100px; height:30px; background: #8CED7E url(images/1418132743_1709.ico) no-repeat center left; padding-left: 16px;">
<input type="submit" name="save" value="ثبت" style=" margin-top:20px; width:100px; height:30px; background: #8CED7E url(images/1418133310_gtk-save-as.png) no-repeat center left; padding-left: 16px;" >
</form>
<?php
if (isset($_GET['save'])){
include '../../includes/config.php';
mysql_query('SET NAMES utf8');

$merchant= $_GET['merchant_id'];
$serial=$_GET['serial_code'];

$ins = "INSERT INTO menu (name,parent_id) VALUES ('$merchant','$serial')";
$saved=mysql_query($ins );
if($saved){


//die("<meta http-equiv='refresh' content='0; url=missing_device.php '> ");
echo "ok";
}


}
?>