PDA

View Full Version : قرار ندادن مقدار در داخل تک کوتیشن



Jason.Bourne
دوشنبه 02 فروردین 1389, 13:15 عصر
قرار مقدار در تک کوتیشن در نوشتن یک query الزامی است؟

منظور این هست که اشکالی دارد که بجای نوشتن یک query مانند


$query = "INSERT INTO `my_table` (`field1`) VALUES ('value1')";مقدار مورد نظر را در تک کوتیشن قرار ندهیم؟


$query = "INSERT INTO `my_table` (`field1`) VALUES (value1)";

maysamscript
دوشنبه 02 فروردین 1389, 17:02 عصر
منظور این هست که اشکالی دارد که بجای نوشتن یک query مانند

کد PHP:

$query = "INSERT INTO `my_table` (`field1`) VALUES ('value1')";


مقدار مورد نظر را در تک کوتیشن قرار ندهیم؟


در صورتی که فیلد شما از نوع رشته ای یا کاراکتری باشه باید حتما داخل '' قرار بگیره. برای فیلد های عددی نیازی نیست

Jason.Bourne
دوشنبه 02 فروردین 1389, 17:12 عصر
میدونید مشکل من چی هست؟!

من از روش زیر برای ذخیره یک آرایه استفاده میکنم.


$item['field1'] = 'value1';
$item['field2'] = 'value2';
$item['field3'] = 'value3';
$item['field4'] = 'value4';
$item['field5'] = 'value5';


$query = "INSERT INTO `my_table` (`field1`,) VALUES ('" . implode("','", $item) . "')";

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

اگر شما بخوای در یکی از فیلدها مقدار NULL را ذخیره کنید به مشکل بر می خوردید.

در این مورد نظری دارید؟ شاید هم روش من به کل اشتباه باشد.

امیـرحسین
دوشنبه 02 فروردین 1389, 19:29 عصر
خوب کوتنیشن ها رو داخل آرایه قرار بدید:
$item = array();
$item['field1'] = "'value1'";
$item['field2'] = "'value2'";
$item['field3'] = "NULL";

$queries = array();
foreach($item as $field => $val)
$queries[] = "INSERT INTO `my_table` (`$field`) VALUES ($val)";

$query = join(";\n", $queries);
echo "<pre>$query</pre>";

Jason.Bourne
دوشنبه 02 فروردین 1389, 19:41 عصر
خروجی کدی که شما نوشتید این هست:


INSERT INTO `my_table` (`field1`) VALUES ('value1');
INSERT INTO `my_table` (`field2`) VALUES ('value2');
INSERT INTO `my_table` (`field3`) VALUES (NULL);


اینطوریکه باید برای ذخیره هر فیلد، یک بار کوئری insert را اجرا کنیم!

فکر نمیکنم منطقی باشد :متفکر:

امیـرحسین
دوشنبه 02 فروردین 1389, 23:31 عصر
خروجی کدی که شما نوشتید این هست:


INSERT INTO `my_table` (`field1`) VALUES ('value1');
INSERT INTO `my_table` (`field2`) VALUES ('value2');
INSERT INTO `my_table` (`field3`) VALUES (NULL);


اینطوریکه باید برای ذخیره هر فیلد، یک بار کوئری insert را اجرا کنیم!

فکر نمیکنم منطقی باشد :متفکر:
کاملا حق با شماست. من فقط با نمونه کد ایشون، مثال زدم.

Jason.Bourne
سه شنبه 03 فروردین 1389, 00:06 صبح
چه راه حل بهینه و منطقی برای این امر وجود دارد؟! (منظور ذخیره آرایه در دیتابیس است)