#php #javascript #sql #get
#php #javascript #sql #получить
Вопрос:
Я использую Javascript для получения параметра URL-адреса ‘member_id’, а затем мне нужно присвоить это значение переменной PHP, которую я использую в SQL-запросе. Когда я просто повторяю переменную PHP, все выглядит хорошо, но если я пытаюсь включить переменную PHP в SQL-запрос, который я отправляю через POST, я получаю ошибку с SQL-запросом.
<script>
var param1var = getQueryVariable("member_id");
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("amp;");
for (var i=0;i<vars.length;i ) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
alert('Query Variable ' variable ' not found');
}
</script>
<?php $foo="<script type='text/javascript'>
document.write(getQueryVariable('member_id'));
</script>";
?>
Ошибка SQL: * У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ‘text / javascript’> document.write(getQueryVariable(‘member_id’)); ‘)’ в строке 1*
Ответ №1:
PHP выполняется на сервере, Javascript выполняется на клиенте. Все, что делает ваш php-чанклет, — это вывод небольшого фрагмента Javascript. этот javascript НЕ выполняется на сервере. Он отправляется клиенту и выполняется в браузере спустя долгое время после завершения работы PHP.
Чтобы отправить данные из Javascript обратно в PHP, вы должны использовать вызов AJAX или какую-либо обычную отправку формы.
Ответ №2:
Это потому, что PHP запускается на сервере, а ваш JS выполняется на клиенте. Кроме того, вы можете сделать что-то по-другому, поэтому в JS:
<script type="text/javascript">
var myval = '<?php echo $myphpval ?>';
</script>
Это возможно, потому что PHP выполняется на сервере до того, как JS выполняется на клиенте. Однако, если вы хотите отправить значение JS в PHP-скрипт, вам нужно будет сделать это после загрузки DOM, обычно с помощью вызова AJAX.
Комментарии:
1. Это моя проблема, передача переменной в sql-запрос, поэтому я не думаю, что смогу сделать это в обратном направлении.
2. Да, я упомянул это просто как в сторону. Смотрите мой последний пункт — или сообщение Марка Б. — о том, что делать вместо этого 🙂