PDA

View Full Version : وارد کردن اطلاعات در دیتابیس



mr.zenith
پنج شنبه 24 اسفند 1391, 21:55 عصر
سلام دوستان
من یک جدول دارم با سه ستون serial-msg-id
حالا با استفاده از کد زیر از یک فایل txt کدای سریال را می خوانم و توی دیتابیس وارد می کنم.

<?php
require_once('cn.php');
$filename = "file.txt";
$lines = file($filename);
$msg="OK";
foreach ($lines as $line_num => $line) {
$i= htmlspecialchars($line) . "\n";
$q=mysql_query("INSERT INTO `product`( `serial`, `msg`) VALUES ('$i', '$msg')");
if($q){ echo "Done";}else {echo "FAild"; }
}
?>
حالا مشکل این هست که تمام کدهایی که با استفاده از کدهای بالا توی دیتابیس وارد شده با استفاده از کوئری زیر قابل استفاده نیست یعنی مقدار کودری تال بر می گرده:

$q=mysql_query("SELECT * FROM product WHERE `serial`='$serial'");
دوستان راهنمایی کنن تا مشکل حل بشه.
کوئری را هر طوری تغییر دادم مقدار نال بر می گرده اما اگر یک سریال را به صورت دستی ب دیتابیس وارد کنیم مشکلی نداره و مقدار برای آن سریال نال نیست
ممنون

linuxUser
جمعه 25 اسفند 1391, 00:25 صبح
سلام دوست عزیز
اول مقدار $i قبل از دستور insert چاپ کن ببین چی برات چاپ می کنه ؟


$i= htmlspecialchars($line) . "\n";
echo $i;
$q=mysql_query("INSERT INTO `product`( `serial`, `msg`) VALUES ('$i', '$msg')");

Unique
جمعه 25 اسفند 1391, 01:48 صبح
جند تا نکته !
اولا زمانی که دارین با file مقادیر را میریزین توی آرایه به خاطر تفاوت EOL توی ویندوز و لینوکس و اینکه از مقدار FILE_IGNORE_NEW_LINES استفاده نمیکنید مشکلات زیادی پیش میاد و تازه خودتون بر این مشکلات اضافه میکنید و n\ میگذارین که دیگه بد تر. در ضمن استفاده از htmlspecialchars به درد نمیخوره ! تازه ممکنه مشکلاتی را به وجود بیاره ! اگه هم serial ها عدد هستند که اصلا نیاز نیست ! پس یک خط را درست کنید درست میشه :


$i = rtrim($line, "\r\n");

اگه هم حتما باید echo بشه :


echo $i."<br>";

راستی دوست عزیز میدونید یکی زا مهمترین موارد در برنامه نویسی انتخاب صحیح نام متغیرهاست !؟ i$ از مواردی هست که به طور خاص در for استفاده میشه ! و کسی به عنوان temp ازش استفاده نمیکنه !