بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

گرفتن اطلاعات فارسی به صورت null

مدیریت گفتگو
سجاد زهره ای 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام من وقتی میخوام اطلاعات فارسی رو از دیتابیس بخونم و در یک edittext چاپ کنم اطلاعات به صورت null ارسال میشه!تمام روش هایی که واسه فارسی گفته بودین تست کردم جواب نداد

 <?php
function connectToDatabase(){
$connection=mysqli_connect("localhost", "zussuodk_root", "Sajad.1373", "zussuodk_api");

if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

return $connection;
}

/**
*
*/
$connection = connectToDatabase();
$username=$_REQUEST['username'];
$result = mysqli_query($connection, "SELECT * FROM users WHERE username='$username'");

$output = array();
while($row = mysqli_fetch_array($result)) {
$record = array();
$record['Id'] = $row['Id'];
$record['username'] = $row['username'];
$record['password'] = $row['password'];
$record['email'] = $row['email'];
$record['date'] = $row['date'];
$record['status'] = $row['status'];
$record['authenticationTime'] = $row['authenticationTime'];
$record['userKey'] = $row['userKey'];
$record['IP'] = $row['IP'];
$record['port'] = $row['port'];
$record['wall'] = $row['wall'];
$record['gps'] = $row['gps'];
$record['name'] = $row['name'];
$record['family'] = $row['family'];
$record['picProfile'] = $row['picProfile'];
$output[] = $record;
}
echo json_encode($output);
mysqli_close($connection);

?>

نظرات

سجاد زهره ای 11 سال پیش
خواهشا کمکم کنید!من تمام مراحلی که شما گفتین داخل پست ها انجام دادم بنظرم یه مشکل دیگه داره!جالبیش اینه که یه فیلدیش فارسی برمیگرده بقیش null مثلا name فارسی ذخیره میشه و برمیگرده
سجاد زهره ای 11 سال پیش
استاد من تاحالا چندتا سوال پرسیدم کسی بلد نبوده اگه میشه حداقل شما کمکم کنید
ATRAS 11 سال پیش
به جای شرط مساوی از like استفاده کنین شاید داده های جدولتون با اون چیزی که درخواست میکنین کمی تفاوت داشته باشه که تو به چشم نمیاد.
سجاد زهره ای 11 سال پیش
نشد!موقع ارسال اطلاعات چجور بفرسم؟چرا null میاد؟
ATRAS 11 سال پیش
کدتون درست به نظر میاد هیچ مشکلی نداره.فقط like خالی کافی نیستا باید در دو طرف متغیرتون هم علامت % بزارین.
سجاد زهره ای 11 سال پیش
اینکارم کردم نمیشه!اعصابمو ریخته بهم چند روزه
سجاد زهره ای 11 سال پیش
حالا جالبیش اینجاس کلمه سجاد که وارد میکنی درست کار میکنه!ولی بقیه کلامات null برمیگردونه الان واستون کدای ذخیره اطلاعاتم میزارم
احمد اسدی 11 سال پیش
این پارامتر username که بصورت متود REQUEST میفرستی، مقدارش فارسی هستش یا اینگلیسی ؟ اگر فارسی هستش باید این رو هم در نظر داشته باشید که تمامآ از کاراکترهای فارسی استفاده کنید، و عربی استفاده نشده باشه. و در کل من پیشنهاد میکنم برای username از کلمات انگلیسی استفاده کنید.
سجاد زهره ای 11 سال پیش
username که اینگلیسی هس!ولی نام و نام خانوتدگی و.. فارسی هس!لطفا کمکم کنید

پاسخ‌ها 5

سجاد زهره ای 11 سال پیش

 case "UpdateWall":
if (isset($_REQUEST['wall']))
{
$wall = $_REQUEST['wall'];
$name= $_REQUEST['name'];
$family= $_REQUEST['family'];
$username=$_REQUEST['username'];
$degree=$_REQUEST['degree'];

$sql = "UPDATE users SET wall='$wall', name='$name', family='$family' , degree='$degree' WHERE username='$username'";

error_log("$sql", 3 , "error_log");
if ($db->query($sql))
{
$out = SUCCESSFUL;
}
else {
$out = FAILED;
}
}
else
{
$out = FAILED;
}
break;

نظرات

یزدانی 11 سال پیش

سلام داداش اگه اشتباده نکنم واسه تک کوتیشن هایی هست که گذاشتی  کد پایینو جاگزین کن ! اگه جواب داد سریع همینجا اعلام کن ! 

 <?php
function connectToDatabase(){
$connection=mysqli_connect("localhost","zussuodk_root","Sajad.1373","zussuodk_api");

if(mysqli_connect_errno()){
echo "Failed to connect to MySQL: ". mysqli_connect_error();
}

return $connection;
}

/**
*
*/
$connection = connectToDatabase();
$username=$_REQUEST['username'];
$result = mysqli_query($connection,"SELECT * FROM users WHERE username='$username'");

$output = array();
while($row = mysqli_fetch_array($result)){
$record = array();
$record[Id]= $row['Id'];
$record[username]= $row['username'];
$record[password]= $row['password'];
$record[email]= $row['email'];
$record[date]= $row['date'];
$record[status]= $row['status'];
$record[authenticationTime]= $row['authenticationTime'];
$record[userKey]= $row['userKey'];
$record[IP]= $row['IP'];
$record[port]= $row['port'];
$record[wall]= $row['wall'];
$record[gps]= $row['gps'];
$record[name]= $row['name'];
$record[family]= $row['family'];
$record[picProfile]= $row['picProfile'];
$output[]= $record;
}
echo json_encode($output);
mysqli_close($connection);

?>

نظرات

سجاد زهره ای 11 سال پیش
تعجب اینجاس کلمه سجاد رو برمیگردونه ولی دیگه هر عبارتی وارد کنی و ارسال کنی سمت سرور بازم null برمیگردونه
سجاد زهره ای 11 سال پیش

اینم چیزی که داخل خروجی جیسون نشون میده!توجه کنید فیلد name داخل اندروید به صورت سجاد نشون میده

ولی متاسفانه همینجور که میبینید family رو null برگردونده

 [{"Id":"16","username":"test1","password":"827ccb0eea8a706c4c34a16891f84e7b"
,"email":"test1@yahoo.com","date":"0000-00-00 00:00:00","status":"0","authenticationTime":"2014-12-07 23:01:10","userKey":"","IP":"5.22.36.113","port":"15145"
,"wall":"love","gps":"","name":"\u0633\u062c\u0627\u062f"
,"family":null,"picProfile":".\/uploads\/profile\/test1\/1408969446959.jpg"}]

نظرات

سجاد زهره ای 11 سال پیش
واقعا خوشبحال کاربرای یک سال پیش هرسوالی که میپرسیدن خود استاد جواب میدادن ولی من الان هرچی سوال پرسیدم به جواب نرسیدم...هیچوقت شانس نداشتیم
احمد اسدی 11 سال پیش
از قسمت PHPMyAdmin برید به دیتابیس موردنظرتون، بعد جدول users رو انتخاب کنید. سپس فیلد family رو حذف کنید و دوباره یه فیلد جدید با همین نام (family) بسازید. توجه داشته باشید که با این کار تمام رکوردهای فیلد family حذف میشود. (دلیل این کار این بود که، شاید موقع ساختن فیلد family، یک فاصله اضافی گذاشته شده که برای خوندشون شناسایی نمیشه)
سجاد زهره ای 11 سال پیش
داداش مشکل این نیس اخه کلمات اینگلیسی جواب میده و حتی سجاد هم که مینویسم جواب میده ولی بقیه کلمات null برمیگردونه
احمد اسدی 11 سال پیش
عجیب غریبه O.o . برنامه ایی که باهاش کد PHP مینویسین، Encoding رو روی چی تنظیم کردین ؟
سجاد زهره ای 11 سال پیش
من رو سرور یه فایل php میسارم و کدامو میزارم داخلش همین..
احمد اسدی 11 سال پیش
نگاه، شما الان باید دیباگ کنین، واسه دیباگ کردن باید مرحله به مرحله برید جلو. اگر شما یک username بنام sajjad دارید که توسط این username، کوئری رو سرچ میزنید و تمام رکوردها به درستی خوانده میشه، پس مشکلی در کوئری و ساختار کد نویسی و فیلدهای دیتابیس ندارید. پس مشکل شما این هستش که اگر username عوض بشه (مثلا ahmad)، باز هم تمام رکوردها خونده میشه ولی فقط فیلید family مقدارش null برگردونده میشه. خب پس واسه دیباگ میریم به دیتابیس سر میزنیم و فیلدی که username اِش برابر با ahmad هستش رو پیدا میکنیم تا مقداری که داخل family این صف ذخیره شده رو بررسی کنیم. بلفرض یک مقدار فارسی داخلش بود، شما بیاید این مقدار رو به اینگلیسی تغییر بدید و ببینید باز هم null برگردونه میشه یا خیر.
سجاد زهره ای 11 سال پیش
نه با انگلیسی اصلا مشکل نداره هیچکدوم از فیلدا ولی همه ی فیلدا وقتی فارسی میزنی null برمیگردونه
احمد اسدی 11 سال پیش
Collation فیلدها رو روی چی ســِــت کردین ؟ :|
سجاد زهره ای 11 سال پیش
Utf8 ..بنظر خودم موقع ارسال پارامتر مشکل دارم..یه نگاه به کد بالا بکنید
احمد اسدی 11 سال پیش
کد بالا چیزی رو نشون نمیده. فقط مقادیری هستش که بصورت json نشون داده شده. و کدهای php هم مشکلی ندارن اگه مشکلی نیست یوزر و پسورد رو بده تا فیکسش کنم.
سجاد زهره ای 11 سال پیش
داداش الان بهت میدم فقط بین خودمون باشه چون من سایتمم روش هست
احمد اسدی 11 سال پیش

مشکلی که وجود داشت:

  1. موقع insert یا گرفتن اطلاعات شما باید در کوئری set_charset رو بروی UTF-8  قرار بدید.
  2. مقادیری که داخل family ذخیره شده بود، یا خالی بود یا هم اینکه یک رشته ای بنام null ذخیره شده بود :| :|

تموم 

نظرات

سجاد زهره ای 11 سال پیش
سلام داداش دستت دردنکنه درست شد فقط یه مشکل دیگم هس بخدا شرمنده داخل index.php اطلاعات بصورتی فارسی ذخیره نمیشه
سجاد زهره ای 11 سال پیش
یعنی موقع ارسال اطلاعات از اندروید بازم فارسی ذخیره نمیکنه
احمد اسدی 11 سال پیش
شما الان تست کنید، فکر نکنم مشکلی داشته باشه.
سجاد زهره ای 11 سال پیش
ولی متاسفانه وقتی ذخیره میکنم درست ذخیره نمیشه
احمد اسدی 11 سال پیش
set_charset رو قرار نداده بودید. دوباره تست کردین شما ؟!
سجاد زهره ای 11 سال پیش

نگاه این دو کد سمت اندروید بکنید

 	@Override
public String UpdateProfile(String name,String family,String wall,String degree)
{
String params = "username=" + this.username+
"&password=" + this.password+
"&action=" + "UpdateWall"+
"&wall=" + wall +
"&name="+ name+
"&family="+ family +
"&degree="+ degree +
"&";

String result = socketOperator.sendHttpRequest(params);
Log.i("wall", result);
return result;
}
 @Override
public String sendHttpRequest(String params)
{
URL url;
String result = new String();
try
{
url = new URL(AUTHENTICATION_SERVER_ADDRESS);
HttpURLConnection connection;
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);

PrintWriter out = new PrintWriter(connection.getOutputStream());

out.println(params);
out.close();

BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String inputLine;

while ((inputLine = in.readLine()) != null) {
result = result.concat(inputLine);
}
in.close();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

if (result.length() == 0) {
result = HTTP_REQUEST_FAILED;
}

return result;


}

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .