چشم الان امتحان میکنم
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
گرفتن اطلاعات فارسی به صورت null
مدیریت گفتگو
آخرین تغییر: 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);
?>
پاسخها 5
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;
نظرات
سلام داداش اگه اشتباده نکنم واسه تک کوتیشن هایی هست که گذاشتی کد پایینو جاگزین کن ! اگه جواب داد سریع همینجا اعلام کن !
<?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);
?>
نظرات
امتحان کردم نشد متاسفانه....فرقی نکرد
تعجب اینجاس کلمه سجاد رو برمیگردونه ولی دیگه هر عبارتی وارد کنی و ارسال کنی سمت سرور بازم null برمیگردونه
اینم چیزی که داخل خروجی جیسون نشون میده!توجه کنید فیلد 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"}]
نظرات
واقعا خوشبحال کاربرای یک سال پیش هرسوالی که میپرسیدن خود استاد جواب میدادن ولی من الان هرچی سوال پرسیدم به جواب نرسیدم...هیچوقت شانس نداشتیم
از قسمت PHPMyAdmin برید به دیتابیس موردنظرتون، بعد جدول users رو انتخاب کنید. سپس فیلد family رو حذف کنید و دوباره یه فیلد جدید با همین نام (family) بسازید. توجه داشته باشید که با این کار تمام رکوردهای فیلد family حذف میشود. (دلیل این کار این بود که، شاید موقع ساختن فیلد family، یک فاصله اضافی گذاشته شده که برای خوندشون شناسایی نمیشه)
داداش مشکل این نیس اخه کلمات اینگلیسی جواب میده و حتی سجاد هم که مینویسم جواب میده ولی بقیه کلمات null برمیگردونه
عجیب غریبه O.o . برنامه ایی که باهاش کد PHP مینویسین، Encoding رو روی چی تنظیم کردین ؟
من رو سرور یه فایل php میسارم و کدامو میزارم داخلش همین..
نگاه، شما الان باید دیباگ کنین، واسه دیباگ کردن باید مرحله به مرحله برید جلو. اگر شما یک username بنام sajjad دارید که توسط این username، کوئری رو سرچ میزنید و تمام رکوردها به درستی خوانده میشه، پس مشکلی در کوئری و ساختار کد نویسی و فیلدهای دیتابیس ندارید. پس مشکل شما این هستش که اگر username عوض بشه (مثلا ahmad)، باز هم تمام رکوردها خونده میشه ولی فقط فیلید family مقدارش null برگردونده میشه. خب پس واسه دیباگ میریم به دیتابیس سر میزنیم و فیلدی که username اِش برابر با ahmad هستش رو پیدا میکنیم تا مقداری که داخل family این صف ذخیره شده رو بررسی کنیم. بلفرض یک مقدار فارسی داخلش بود، شما بیاید این مقدار رو به اینگلیسی تغییر بدید و ببینید باز هم null برگردونه میشه یا خیر.
نه با انگلیسی اصلا مشکل نداره هیچکدوم از فیلدا ولی همه ی فیلدا وقتی فارسی میزنی null برمیگردونه
Collation فیلدها رو روی چی ســِــت کردین ؟ :|
Utf8 ..بنظر خودم موقع ارسال پارامتر مشکل دارم..یه نگاه به کد بالا بکنید
کد بالا چیزی رو نشون نمیده. فقط مقادیری هستش که بصورت json نشون داده شده. و کدهای php هم مشکلی ندارن اگه مشکلی نیست یوزر و پسورد رو بده تا فیکسش کنم.
داداش الان بهت میدم فقط بین خودمون باشه چون من سایتمم روش هست
مشکلی که وجود داشت:
- موقع insert یا گرفتن اطلاعات شما باید در کوئری set_charset رو بروی UTF-8 قرار بدید.
- مقادیری که داخل family ذخیره شده بود، یا خالی بود یا هم اینکه یک رشته ای بنام null ذخیره شده بود :| :|
تموم
نظرات
سلام داداش دستت دردنکنه درست شد فقط یه مشکل دیگم هس بخدا شرمنده داخل index.php اطلاعات بصورتی فارسی ذخیره نمیشه
اون هم درست شده
یعنی موقع ارسال اطلاعات از اندروید بازم فارسی ذخیره نمیکنه
شما الان تست کنید، فکر نکنم مشکلی داشته باشه.
ولی متاسفانه وقتی ذخیره میکنم درست ذخیره نمیشه
set_charset رو قرار نداده بودید. دوباره تست کردین شما ؟!
بله الان دارم تست میکنم
نگاه این دو کد سمت اندروید بکنید
@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 +
"°ree="+ 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;
}
نظرات
بله الان دارم تست میکنم
داداش حل نشد؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات