Я хочу обновить базу данных со вспышкой (ввод текста)
Вот мой php-код
<?php mysql_pconnect ("localhost", "root", ""); mysql_select_db ("adaptasi"); $isi = isset($_POST['OutData']); $query2 = "UPDATE materi SET isi='$isi' WHERE id = 1"; $result2=mysql_query($query2) or die("Query Failed : ".mysql_error()); ?>
Вот мой ActionScript 2
function SubmitData() { trace("Sending"); var OutData = new LoadVars(); text_morfologi.text = OutData.OutData; filepath = "http://localhost/adaptasi/"; OutData.sendAndLoad(filepath + "editmorfologi.php", OutData, "POST"); } btnsave.onRelease = function() { SubmitData(); btnedit.visible = true; btnsave.visible = false; };
Но результат isi в базе данных – это «1», а не текст, который я вводил в текстовое поле. благодаря
У вас есть некоторые проблемы с кодом:
ActionScript 2:
Чтобы отправить данные с помощью объекта LoadVars
вы должны атташе по отношению к этому объекту в качестве его свойств, и если вы хотите получить ответ со своего сценария на стороне сервера, вы можете использовать LoadVars.sendAndLoad()
но если вы хотите просто отправить эти данные не дожидаясь ответа, вы можете использовать LoadVars.send()
.
Предположим, что вы будете использовать функцию sendAndLoad()
, поэтому код может выглядеть следующим образом:
var url:String = 'http://www.example.com/update.php'; // the LoadVars object that will receive (load) a response from the server var receiver:LoadVars = new LoadVars(); receiver.onLoad = function(success:Boolean) { if (success) { trace(receiver.response); // gives for example : update successful } else { trace('error'); } } // the LoadVars object which will send (post) some data to the server var sender:LoadVars = new LoadVars(); sender.id = txt_id.text; sender.name = txt_name.text; sender.sendAndLoad(url, receiver); // we don't set the method to POST because that's its default value
PHP:
Как упоминалось во многих комментариях, функция isset()
PHP используется для проверки того, установлена ли переменная и не является NULL, и она возвращает логическое значение ( TRUE
of FALSE
), которое когда оно выполняется (преобразование) в строку , даст вам 1
для TRUE
и “ (пустая строка) для FALSE
.
В вашем случае, и, по вашему мнению, я думаю, что, поскольку переменная $_POST['OutData']
по-видимому, установлена, isset($_POST['OutData'])
является истиной, которая установит значение $isi
isset($_POST['OutData'])
1
, поэтому вы получите:
$query2 = "UPDATE materi SET isi='1' WHERE id = 1";
но, согласно вашему опубликованному коду, я думаю, что вы должны получить:
$query2 = "UPDATE materi SET isi='' WHERE id = 1";
Вернемся к нашему текущему примеру, мы получим две наши переменные POST (id и имя), отправленные сценарием AS2, чтобы обновить БД и затем вернуть ответ, если данные были успешно обновлены или нет:
<?php if(isset($_POST['id'] && isset($_POST['name'])) { $id = $_POST['id']; $name = $_POST['name']; mysql_pconnect('localhost', 'root', ''); mysql_select_db('my_db'); $query = "UPDATE users SET name = '$name' WHERE id = $id"; $result = mysql_query($query); if($result){ echo 'response=update successful'; } else { echo 'response=update failed'; } } ?>
Конечно, здесь я попробовал просто дать вам очень простой пример рабочего кода в соответствии с вашим текущим. Вы должны знать, что для вашей стороны PHP, что расширение «mysql» было устарело в PHP 5.5.0 и было удалено в PHP 7, вам следует подумать о том, чтобы использовать расширения «mysqli» или «PDO» , для получения более подробной информации, посмотрите здесь , также не забывайте санировать , проверять и избегать любых данных пользователя, … и для стороны ActionScript, возможно, пришло время начать изучение ActionScript 3 …
Надеюсь, что это поможет.