タイトルのとおりです。
PHPファイルはさくらサーバーにあり、そのサーバーのDBへデータを送信するという流れで、IOSでは送信し、データを保存できるのに、Androidだけできないという状況です。
アンドロイドは実機、エミュレーター両方試していますがダメな状況です。
ピンポイントで解決策は出るような問題ではないと思いますので、考えられることがあれば試したいのでぜひ知見をお貸しください。
よろしくお願いします。
js
1//MemoDataCreateScreen.js 2 3 class MemoDataCreateScreen extends React.Component { 4 state = { 5 text: '', 6 mean: '' 7 }; 8 addSQL() { 9 if (this.state.text == '' && this.state.mean == '') 10 return Alert.alert('未入力です'); 11 const request = new XMLHttpRequest(); 12 request.onreadystatechange = function() { 13 console.log(request); 14 if (request.readyState === 4) { 15 if (request.status == 200) { 16 console.log('通信成功'); 17 } else { 18 console.log('通信失敗'); 19 } 20 } 21 }; 22 request.onload = function() { 23 console.log('通信完了!'); 24 }; 25 request.open( 26 'POST', 27 'https://ここにサーバー名/secret.php', 28 true 29 ); 30 request.send(`text=${this.state.text}&mean=${this.state.mean}`); 31 } 32 test() { 33 console.log('test'); 34 } 35 36 render() { 37 return ( 38 <View> 39 <TextInput 40 style={styles.textInput} 41 placeholder='Textをここに入力' 42 onChangeText={text => { 43 this.setState({ 44 text: text 45 }); 46 }} 47 ></TextInput> 48 <TextInput 49 style={styles.textInput} 50 placeholder='Meanをここに入力' 51 multiline 52 onChangeText={text => { 53 this.setState({ 54 mean: text 55 }); 56 }} 57 ></TextInput> 58 <TouchableHighlight> 59 <Button title='送信' onPress={() => this.addSQL()} /> 60 </TouchableHighlight> 61 </View> 62 ); 63 } 64} 65
php
1//secret.php 2<?php 3$textValue = $_POST["text"]; 4$mean = $_POST["mean"]; 5echo 'test'; 6 7try { 8 $pdo = new PDO('mysql:dbname=ksk-tennis_english;charset=utf8;host=mysql743.db.sakura.ne.jp', 'ksk-tennis', 'yukitiindb11'); //root1個目はid、2個目はパスワード 9} catch (PDOException $e) { 10 exit('DB Error:'.$e->getMessage()); 11} 12 13 14//3.データ登録SQL作成 15$sql = "INSERT INTO `posts`(`indate`, `text`, `mean`) VALUES (sysdate(),:textValue, :mean)"; 16$stmt = $pdo->prepare($sql); 17$stmt->bindValue(':textValue', $textValue, PDO::PARAM_STR); //Integer(数値の場合 PDO::PARAM_INT) 18$stmt->bindValue(':mean', $mean, PDO::PARAM_STR); //Integer(数値の場合 PDO::PARAM_INT) 19$status = $stmt->execute(); //実行 20// var_dump("aaa"); 21//debagよう 22//4.データ登録処理後 23if ($status==false) { 24 //SQL実行時にエラーがある場合(エラーオブジェクト取得して表示) 25 $error = $stmt->errorInfo(); 26 exit("SQL Error:".$error[2]); 27} else { 28 //5.index.phpへリダイレクト 29 echo "送信したっす"; 30 // header("Location: index.php"); 31 exit(); //終了のおまじない 32} 33
xml
1//AndroidManifest.xml 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.helloworld"> 4 5 <uses-permission android:name="android.permission.INTERNET" /> 6 <uses-permission android:name="android.permission.RECORD_AUDIO"/> 7 8 <application 9 android:name=".MainApplication" 10 android:label="@string/app_name" 11 android:icon="@mipmap/ic_launcher" 12 android:roundIcon="@mipmap/ic_launcher_round" 13 android:allowBackup="false" 14 android:theme="@style/AppTheme"> 15 <activity 16 android:name=".MainActivity" 17 android:label="@string/app_name" 18 android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 19 android:windowSoftInputMode="adjustResize"> 20 <intent-filter> 21 <action android:name="android.intent.action.MAIN" /> 22 <category android:name="android.intent.category.LAUNCHER" /> 23 </intent-filter> 24 </activity> 25 <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> 26 </application> 27 28</manifest> 29
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。