Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в MySQL-запрос .
Пример того, что не делать («Плохая идея»):
$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);
Этот код может быть включен в страницу с формой для отправки с URL-адресом например http://example.com/edit.php?id=10 (для редактирования сообщения n ° 10)
Что произойдет, если представленный текст содержит одинарные кавычки ? $query
закончится:
$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';
И когда этот запрос будет отправлен в MySQL, он будет жаловаться, что синтаксис неверен, потому что в середине есть отдельная одинарная кавычка.
Чтобы избежать таких ошибок, вы ДОЛЖНЫ всегда избегать данных перед использованием в запросе.
Экранирование данных перед использованием в SQL-запросе также очень важно, потому что если вы этого не сделаете, ваш скрипт будет быть открытым для инъекций SQL. SQL-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!
Документация:
Путь к каталогу установки CLR, активного для текущего приложения.NET, может быть получен при помощи следующего метода:
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
я был бы сильно совет против чтения реестра непосредственно. Например, когда приложение.NET работает в системах на 64 бита, CLR может или быть загружен из "C:\Windows\Microsoft.NET\Framework64\v2.0.50727" (AnyCPU, x64 цели компиляции) или из "C:\Windows\Microsoft.NET\Framework\v2.0.50727" (x86 цель компиляции). Чтение реестра будет не , говорят Вам, какой из этих двух каталогов использовался текущим CLR.
Другой важный факт - то, что "текущий CLR" будет "2.0" для.NET 2.0.NET 3.0 и.NET 3,5 приложения. Это означает, что GetRuntimeDirectory () вызов возвратит 2,0 каталога даже в.NET 3,5 приложения (которые загружают некоторые их блоки из 3,5 каталогов). В зависимости от Вашей интерпретации термина "путь к каталогу Платформы.NET", GetRuntimeDirectory не мог бы быть информацией, которую Вы ищете ("каталог CLR" по сравнению с "каталогом, из которого 3,5 блока прибывают из").
Более легкий путь состоит в том, чтобы включать Microsoft. Сборка. Блок утилит и использование
using Microsoft.Build.Utilities;
ToolLocationHelper.GetPathToDotNetFramework(
TargetDotNetFrameworkVersion.VersionLatest);
Можно захватить его из Windows Registry:
using System;
using Microsoft.Win32;
//...
public static string GetFrameworkDirectory()
{
// This is the location of the .Net Framework Registry Key
string framworkRegPath = @"Software\Microsoft\.NetFramework";
// Get a non-writable key from the registry
RegistryKey netFramework = Registry.LocalMachine.OpenSubKey(framworkRegPath, false);
// Retrieve the install root path for the framework
string installRoot = netFramework.GetValue("InstallRoot").ToString();
// Retrieve the version of the framework executing this program
string version = string.Format(@"v{0}.{1}.{2}\",
Environment.Version.Major,
Environment.Version.Minor,
Environment.Version.Build);
// Return the path of the framework
return System.IO.Path.Combine(installRoot, version);
}
Считайте значение [HKLM] \Software\Microsoft. Ключ NetFramework\InstallRoot - Вы получите "C:\WINDOWS\Microsoft.NET\Framework". Затем добавьте с желаемой версией платформы.