PHP Apostrophe и строка запроса

Я хочу предоставить инструкцию SQL из строки запроса, но все мои усилия приводят к сбрасыванию одинарных кавычек и косых черт.

Во-первых, убедитесь, что вы действительно действительно хотите это сделать. Это созрело для атаки SQL Injection.

Если вы хотите что-то запускать заявления против базы данных MySQL, просто используйте phpMyAdmin или MySQL workbench.

Предполагая, что вы используете mysql, используйте mysql_real_escape_string ()

http://www.php.net/manual/en/function.mysql-real-escape-string.php

как я могу реализовать это в общем виде?

Все запросы должны быть жестко закодированы в вашем скрипте.
Конечно, некоторые из них могут быть динамически построены, но вам разрешено создавать только динамические, а не управляющие структуры DATA.
Итак, это должно быть так:

$name=mysql_real_escape_string($_POST['name']); if ($id = intval($_POST['id'])) { $query="UPDATE table SET name='$name' WHERE id=$id"; } else { $query="INSERT INTO table SET name='$name'"; } 

или это:

 if (!isset($_GET['id'])) { $query="SELECT * FROM table"; } else { $id = intval($_GET['id']; $query="SELECT * FROM table WHERE id=$id"; } 

или что-то еще.
Конечно, вставленные данные должны быть надлежащим образом экранированы, лишены или привязаны .

Но иногда нам нужно использовать динамический оператор или идентификатор. Принцип один и тот же: все должно быть жестко закодировано в вашем скрипте, и ничего не нужно передавать с клиентской стороны непосредственно в SQL-запрос.
Скажем, чтобы сделать динамическую сортировку, вы можете использовать такой код

 $orders=array("name","price","qty"); $key=array_search($_GET['sort'],$orders)); $orderby=$orders[$key]; $query="SELECT * FROM `table` ORDER BY $orderby"; - $orders=array("name","price","qty"); $key=array_search($_GET['sort'],$orders)); $orderby=$orders[$key]; $query="SELECT * FROM `table` ORDER BY $orderby"; 

или собрать динамическое ГДЕ:

 $w=array(); if (!empty($_GET['rooms'])) $w[]="rooms='".mysql_real_escape_string($_GET['rooms'])."'"; if (!empty($_GET['space'])) $w[]="space='".mysql_real_escape_string($_GET['space'])."'"; if (!empty($_GET['max_price'])) $w[]="price < '".mysql_real_escape_string($_GET['max_price'])."'"; if (count($w)) $where="WHERE ".implode(' AND ',$w); else $where=''; $query="select * from table $where";