Как из php передать в sql переменную, как название новой таблицы?
Как передать переменную с php в процедуру mysql
Создаю процедуру CREATE DEFINER = `root`@`localhost` PROCEDURE `rep` ( IN `p_id` INT ) NOT.
Как передать значение переменной JS в переменную PHP?
Как передать значение переменной JS в переменную PHP? Можно и в сессионную переменную.
Как вместо названия таблицы в sQL-запросе можно подставить переменную, данное название содержащую?
Проблема такая. Каким образом вместо названия таблицы в sQL-запросе можно подставить переменную.
mysql_query($query) or die(mysql_error());
. $query = "INSERT INTO $postable VALUES('$real_name','$url_name','.
Добавлено через 13 минут
MySQL server version for the right syntax to use near ‘346767’ at line 1 . спасибо
он к переменной добавляет ‘ ‘
Сообщение было отмечено Vic-Tor как решение
Решение
$query = "CREATE TABLE `".$url_name."` (id int(2) primary key auto_increment, name varchar(100),tel varchar(20))"; mysql_query($query); // создаем таблицу "student" в виде (id,name,tel) $query = "INSERT INTO `".$postable."` VALUES('".$real_name."','".$url_name."','".$img_group."')";
Как вставить переменные в sql запрос на php?
Вопрос:
Как правильно оформить вставку переменных в этот запрос?
Оценить 1 комментарий
А точки-то зачем? для прайса можно взять between, если это числа. Попробуйте написать сначала запрос или в консоли, или в чем-то типа phpmyadmin, если он есть.
Только. Через. Плесхолдеры.
Любой, кто отвечает иначе — тупой нуб, застрявший в прошлом веке и так и не осиливший даже азы программирования.
Соответственно, тебе нужна библиотека, которая поддерживает плейсхолдеры. Хотя старушку mysql ext можно заставить, но для новичка лучше всего подойдет PDO.
$sql = "SELECT * FROM mytable WHERE city = ? AND price BETWEEN ? AND ? AND type = 'Продать'"; $stmt = $pdo->prepare($sql); $stmt->execute([$_POST['city'], $_POST['area'], $_POST['price']-50, $_POST['price']+50]); $data = $stmt->fetchAll();
Как соединяться с БД и вообще про PDO читай здесь: phpfaq.ru/pdo
А твоя ошибка вызвана опечаткой и неправильной обработкой ошибок.
Во-первых, у тебя в какой-то из запросов передается пустая строка — скорее всего, из-за опечатки
Во-вторых, если бы в РНР было включено нормальное отображение ошибок, то РНР тебе бы сам ругнулся на эту опечатку.
В-третьих, если бы ошибки mysql обрабатывались по-человечески, то РНР тоже указал бы на тот конкретный запрос, который оказался пустым. И ты бы не хватался вместо него за первый попавшийся.
Как в sql запрос вставить переменную php
Для того чтобы передать переменную в SQL запрос в PHP, можно использовать один из следующих вариантов:
- Использовать подготовленные запросы. Это позволяет избежать SQL инъекций и передавать переменные в запрос безопасным способом. Пример:
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email'); $stmt->execute(['email' => $email]); $user = $stmt->fetch();
- Сформировать строку запроса с помощью конкатенации строк и передать ее в функцию выполнения запроса. Пример:
$sql = "SELECT * FROM users WHERE email = '" . $email . "'"; $result = mysqli_query($conn, $sql); $user = mysqli_fetch_assoc($result);
Важно учитывать, что при использовании второго варианта возможна SQL инъекция, поэтому необходимо очищать переменные перед использованием их в запросе.
Для более детального изучения вопроса «SQL инъекции» рекомендуем просмотреть урок Безопасность при работе с внешними данными из курса PHP PDO: Работа с базой данных
Как вставить переменную PHP в запрос SQL
Это получает имя и фамилию из таблицы, называемой пользователями, и объединяет их вместе, помещая пространство посередине и ставит в порядке возрастания. Затем я помещаю это в массив и прокручиваю его, чтобы использовать его в раскрывающемся списке выбора. Это работает, однако, то, что я сейчас хочу сделать, это сравнить полное имя с столбцом с именем username в другой таблице, называемой пользователем. Я изо всех сил пытаюсь написать запрос. Пока у меня есть.
Вы действительно должны ссылаться на использование PDO. При использовании PDO вы можете привязывать параметры к определенным частям вашего запроса. PDO также имеет встроенную защиту от SQL-инъекций, которая является большой мерой безопасности, с которой вам не придется иметь дело. Надеюсь, это ответит на ваш вопрос. См. Мой пример ниже. Пример:
// Create a new PDO object holding the connection details $pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // Create a SQL query $query = "SELECT username FROM users WHERE (forename + ' ' + surname) AS fullname = :visiting;"; // Prepare a PDO Statement with the query $sth = $pdo->prepare($query); // Create parameters to pass to the statement $params = [ ':visiting' => $_POST['Visiting'] ] // Execute the statement and pass the parameters $sth->execute($params); // Return all results $results = $sth->fetchAll(PDO::FETCH_ASSOC);
Если у вас есть другие вопросы о PDO, обратитесь к следующему:
Официальная документация PDO:
http://php.net/manual/en/book.pdo.php Документация о том, как связывать переменные:
http://php.net/manual/en/pdostatement.bindparam.php
$qry2 "SELECT username FROM users WHERE (forename + ' ' + surname) = '" . $_POST['Visiting'] . "'";
Но для лучшей безопасности (SQL-инъекция) вы должны использовать экранирование переменной. Например, эта конструкция, если вы используете базу данных MySQL:
$qry2 "SELECT username FROM users WHERE (forename + ' ' + surname) = '" . mysql_real_escape_string($_POST['Visiting']) . "'";
да, это только пример. Защита инъекций sql важна. Функции / классы зависят от используемого движка sql (mysql, postgresql, . ).
Это может сработать, если вы используете PDO:
$qry2 = "SELECT username FROM users WHERE CONCAT(forename, ' ', surname) = '" . $conn->quote($_POST['Visiting']) . "'";
. но вы должны посмотреть на возможные уязвимости с помощью SQL-инъекций.
Не зная, какую библиотеку вы используете для подключения к базе данных MySQL, невозможно дать правильное представление о том, какой метод вы должны использовать для экранирования ввода пользователя. quote — метод PDO для экранирования, real-escape-string является эквивалентом для MySQLi
Это понизило меня из-за опасности SQL-инъекций. Он будет скопирован и использован, и драма продолжится.