Я написал эту небольшую функцию несколько лет назад:
function sqlvprintf($query, $args)
{
global $DB_LINK;
$ctr = 0;
ensureConnection(); // Connect to database if not connected already.
$values = array();
foreach ($args as $value)
{
if (is_string($value))
{
$value = "'" . mysqli_real_escape_string($DB_LINK, $value) . "'";
}
else if (is_null($value))
{
$value = 'NULL';
}
else if (!is_int($value) && !is_float($value))
{
die('Only numeric, string, array and NULL arguments allowed in a query. Argument '.($ctr+1).' is not a basic type, it\'s type is '. gettype($value). '.');
}
$values[] = $value;
$ctr++;
}
$query = preg_replace_callback(
'/{(\\d+)}/',
function($match) use ($values)
{
if (isset($values[$match[1]]))
{
return $values[$match[1]];
}
else
{
return $match[0];
}
},
$query
);
return $query;
}
function runEscapedQuery($preparedQuery /*, ...*/)
{
$params = array_slice(func_get_args(), 1);
$results = runQuery(sqlvprintf($preparedQuery, $params)); // Run query and fetch results.
return $results;
}
Это позволяет запускать операторы в однострочном C # -ish String.Format, например:
runEscapedQuery("INSERT INTO Whatever (id, foo, bar) VALUES ({0}, {1}, {2})", $numericVar, $stringVar1, $stringVar2);
Он избегает использования типа переменной. Если вы попытаетесь параметризовать имена таблиц и столбцов, это будет терпеть неудачу, поскольку она помещает каждую строку в кавычки, которая является недопустимым синтаксисом.
ОБНОВЛЕНИЕ БЕЗОПАСНОСТИ: предыдущая версия str_replace
разрешала инъекции, добавляя токены {#} в пользовательские данные. Эта версия preg_replace_callback
не вызывает проблем, если замена содержит эти токены.
arduino плата походит на излишество для чего-то это конкретное, espeacially если Вы не собираетесь быть использованием его с соединением ни с чем больше. Плюс Вы оказываются перед необходимостью покупать множество компонентов или щита arduino (конкретно релейный щит), таким образом, он быстро сложит, особенно если Вы не захотите спаивать (то Вы будете смотреть приблизительно на 120$ +tax для arduino и щита.)
, Так как Вы переключаете AC (лампочка) и компьютер, выделяет DC, Вам будут нужны реле. Также необходимо будет переключить реле с транзисторами, поскольку я не думаю, вывод от последовательного или usb произведет мА, которого Вы хотите.
самый легкий способ пойти об этом состоит в том, чтобы использовать плату реле USB. Что-то вроде этого работало бы большое http://www.robotshop.us/phidgets-1014-relay-interface.html . Плюс его 1/3 цены более ранней комбинации. Еще лучше они дают Вам, библиотеки для управления им настолько программирующий являются бризом.
Также при продолжении на eBay можно получить их еще более дешевый, особенно если Вы не возражаете использовать теперь "старинный" параллельный порт вместо этого. Я не думаю, что Вы получите библиотеки все же.
Удача
Когда-нибудь думайте о попытке phidgets? (www.phidgets.com)
реле Питания USB:
Вот одна большая проблема: Если я - TC'ing в тот день, я не вижу Ваш световой сигнал . По этой причине, я создал бы это так же мало света, который находится в лотке и показывает текущее состояние сборки. Люди, которые хотят знать состояние сборки, могут установить его, люди, которые не заботятся, не будут побеспокоены Вашим навязчивым светофором. Я слышал представление от консультанта однажды, и он сказал, что сделал это в одной компании, и типы VP просто любили ее. Вот одна ссылка ; образец находится в Python.
Редактирование: Кажется, что CruiseControl.NET уже имеет этот вид вещи .
Если бы Вы любите делать его сами, интерфейс последовательного порта не был бы слишком трудным. Последовательный порт имеет по крайней мере две строки, которые могут быть переключены вкл\выкл: РТС/CTS и DSR/DTR. При включении любой строки Вы получаете +5VDC на той конкретной строке. Можно использовать те строки для управления реле, которые в свою очередь переключают световые сигналы вкл\выкл.
Большинство компонентов ПК не обработает 115 В переменного тока. Вы могли смотреть на некоторых материал от x10, который является старым домашним стандартом автоматизации. Другое мудрое необходимо будет использовать реле, которыми управляет ПК для переключения 115 В переменного тока.
Модули X-10 вероятны самый легкий путь для взятия. При попытке сделать 110 В, переключающихся самостоятельно, то Ваш проект быстро станет аппаратным проектом, а не программным обеспечением один. X-10 (привыкший к?) имеют аппаратный ключ, который включается на последовательный порт (названный "петардой"). Протокол для этого может быть найден онлайн.
Заключительный протест: X-10 является довольно не использующим высокие технологии и подвергается интерференции от современных предоставлений коммутируемой мощности. Так попробуйте его в своем офисе перед согласием на усилие по программному обеспечению.
Используйте последовательный порт, который управляет H-мостом (можно получить микросхему от digikey), который управляет реле (digikey снова). Мост H электрически изолирует последовательный порт и ограничивает текущую ничью. Не возможно переключить стену, текущую с транзистором, так вот почему Вы используете реле.
Я нашел парня, который создал абсолютный светофор здесь: http://people.usm.maine.edu/houser/bblight/index.html . Похож на большее количество работы, чем Вы хотите сделать все же.
Это устройство" Питание IP 9258 " должно работать на Вас, это - управляемый энергетический батончик Ethernet. Это подобно устройству, используемому в этом проекте "Красное Предупреждение Переноса!" - Hudson Bear Lamps .
А поиск Google реле управлял удлинителем, тоннами списков проектов создать Ваше собственное.
Только дать еще некоторые опции:
Реле могут быть заменены тиристорами. Они не страдают от механического износа..
Другое дешевое и легкое решение: Купите дешевые три органа света канала и подключите его к звуковому выводу ПК. Найдите резонансные частоты этих трех выводов путем воспроизведения некоторых тестовых тонов синуса или развертки синуса.
Тот способ, которым можно не только переключить эти три световых сигналов, можно потускнеть и пульсировать световые сигналы также. Никакая потребность бездельничать с USB и реле.
Доберитесь светофор USB и кабельный удлинитель USB. Я гравитирую к возможному простому решению. Должно быть довольно легко записать некоторое программное обеспечение для управления им.
Изучите X10
(Редактирование: замененные исходные плакаты NSFW связываются со страницей Википедии на X10)
Вам будет нужно:
open collector output board
(как модуль VM110 Интерфейсной платы USB) и можно использовать Вас 12 В ПК для включения катушки реле.
Советы обычно идут с драйверами и библиотеками для управления ими.