Я хочу использовать параметр в следующем запросе, но я не совсем уверен, как это сделать.
$id
будет 1, 2 или 3 и т.д., и я хочу выбрать, где C.Name - Galleri1 или Galleri2 и т.д.
Это то, что я получил до сих пор, но я не уверен, как добавить $ id.
function getGallery($id){
$data = array();
$Q = $this->db->query('SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = "Galleri($id)"
AND p.status = "active"
');
ОБНОВЛЕНИЕ: я использую PHP и MySQL
Я думаю, что вы ищете здесь:
function getGallery($id){
$data = array();
$Q = $this->db->query('SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = "Gallery' . $id . '"
AND p.status = "active"
');
Примечание. Я исправил правописание Галереи в запросе, так как я думаю, что это была опечатка:
Galleri
в
Gallery
Надеюсь, это поможет!
EDIT: для предотвращения использования SQL-инъекций:
function getGallery($id){
$data = array();
$id = str_replace("'", "''", $id);
$query = 'SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = "Gallery' . $id . '"
AND p.status = "active"
'
$Q = $this->db->query($query);
Посмотрите это руководство по PHP.
Сначала вы создаете строку для имени галереи. "Galleri1", "Galleri2" и т.д. Затем привяжите эту строку как параметр к запросу.
Что-то вроде этого:
$sth = $this->prepare('SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = ?
AND p.status = "active"
');
$gallery_name = "Galleri$id";
$sth->bind_param( 1, $gallery_name );
$q = $sth->execute();
Построение строки запроса из параметра, как это было предложено другими респондентами, может открыть дверь для атаки SQL-инъекций, если вы не будете осторожны. Например, что произойдет, если $id="' OR 1=1 OR C.Name !='"
и вы соедините его с строкой запроса?
Использование привязки параметров, как я показал выше, предотвращает эту проблему.
Предполагаю, что вы используете PHP. Возможно, что-то вроде
function getGallery($id){
$data = array();
$Q = $this->db->query("SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = 'Galleri$id'
AND p.status = 'active'
");
Однако вы должны знать SQL-инъекции, поэтому сначала избегайте его (если это не сделано в каком-либо другом месте)
function getGallery($id) {
$id = $this->db->escape($db); // or similar
Если ваш класс базы данных поддерживает подготовленные инструкции, вы должны использовать их вместо этого.