Я хотел бы включить подготовленные инструкции PDO INSERT и UPDATE в INSERT и ON DUPLICATE KEY UPDATE, так как я думаю, что это будет намного более эффективно, чем то, что я сейчас делаю, но мне трудно понять правильный синтаксис для использовать с именованными заполнителями и bindParam. Я нашел несколько похожих вопросов на SO, но я […]
Попытка узнать что-то новое – в частности, пытаясь выбрать, использовать MySQLi или PDO для будущих проектов при работе с MySQL – я наткнулся на эту страницу, на которой представлен обзор доступных мне вариантов. В нижней части этой страницы находится таблица, сравнивающая функциональность трех основных методов связи с mysql. В строке « API поддерживает подготовленные заявления […]
Я работаю над проектом для uni и использовал следующий код на testing server чтобы get all devices из таблицы на основе user_id : public function getAllDevices($user_id) { $stmt = $this->conn->prepare("SELECT * FROM devices WHERE primary_owner_id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $devices = $stmt->get_result(); $stmt->close(); return $devices; } Это отлично работало на моем тестовом сервере, но […]
В другом вопросе есть комментарий, в котором говорится следующее: «Когда дело доходит до запросов к базе данных, всегда старайтесь использовать подготовленные параметризованные запросы. Библиотеки mysqli и PDO поддерживают это. Это бесконечно безопаснее, чем использование функций escaping, таких как mysql_real_escape_string». Источник Итак, я хочу спросить: почему подготовленные параметризованные запросы более безопасны?
У меня есть хранимая процедура IsUserPresent как: DELIMITER $$ CREATE PROCEDURE IsUserPresent( in userid varchar (150), out isPresent bit ) BEGIN SET isPresent=0; SELECT COUNT(*) INTO isPresent FROM users_table WHERE users_table.userid=userid; END$$ и я хочу вызвать его из PHP с помощью подготовленного оператора mysqli. Я делаю это после фрагмента кода, но это дает мне предупреждение. […]
Я пытаюсь окунуться в MySQli, и я смущен сообщением об ошибках. Я использую возвращаемое значение инструкции MySQLi «подготовить» для обнаружения ошибок при выполнении SQL, например: $stmt_test = $mysqliDatabaseConnection->stmt_init(); if($stmt_test->prepare("INSERT INTO testtable VALUES (23,44,56)")) { $stmt_test->execute(); $stmt_test->close(); } else echo("Statement failed: ". $stmt_test->error . "<br>"); Но является ли возвращаемое значение инструкции prepare только обнаружением ошибки в […]
В настоящее время я использую устаревший код для получения данных от пользователей, а именно: /* retrieve */ $lastName = $_POST['lastName']; $firstName = $_POST['firstName']; $examLevel=$_POST['level']; /* connect */ $dbc=mysql_connect("localhost", "user", "passw") or die('Error connecting to MySQL server'); mysql_select_db("db") or die('Error selecting database.'); /* sanitize */ $lastName=mysql_real_escape_string($lastName); $firstName=mysql_real_escape_string($firstName); $examLevel=mysql_real_escape_string($examLevel); /* insert */ $query_personal = "INSERT INTO personal […]
Я хотел бы увидеть пример вызова метода bind_result vs. get_result и какова цель использования одного над другим. Также за и против использования каждого. Каково ограничение использования и есть ли разница.
Я избиваю голову над синтаксической ошибкой ниже. Я пытаюсь связать вмонтированный массив в подготовленный оператор, но я получаю следующую синтаксическую ошибку: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с?? в строке 1 Вот мой код. Может ли кто-нибудь увидеть, где я ошибаюсь? […]
Я хотел бы знать, могу ли я подготовить один оператор mysqli, который выполняет несколько запросов: mysqli->prepare(query1 …1,2,3 param…; query2…4,5 param…); or mysqli->prepare(insert into …1,2,3 param…; insert into…4,5 param…); and after all mysqli->bind_param("sssss", 1, 2, 3, 4, 5); Таким образом, он делает ошибку: вызовите функцию-член bind_param () для не-объекта в … $stmt = $sql->getQueryPrepare("INSERT INTO user […]