Если таблицы cols и значения являются переменными, то существует два способа:
С двойными кавычками ""
полный запрос:
$query = "INSERT INTO $table_name (id, $col1, $col2)
VALUES (NULL, '$val1', '$val2')";
Или
$query = "INSERT INTO ".$table_name." (id, ".$col1.", ".$col2.")
VALUES (NULL, '".$val1."', '".$val2."')";
С одинарными кавычками ''
:
$query = 'INSERT INTO '.$table_name.' (id, '.$col1.', '.$col2.')
VALUES (NULL, '.$val1.', '.$val2.')';
Использовать обратные тики ``
, когда имя столбца / значения похоже на зарезервированное ключевое слово MySQL.
Примечание: Если вы указываете имя столбца с именем таблицы, используйте обратные тики следующим образом:
`table_name`
. `column_name`
& lt; - Примечание: исключить .
из обратных тиков.
Явным образом реализуя интерфейс, например:
public interface ITest {
void Test();
}
public interface ITest2 {
void Test();
}
public class Dual : ITest, ITest2
{
void ITest.Test() {
Console.WriteLine("ITest.Test");
}
void ITest2.Test() {
Console.WriteLine("ITest2.Test");
}
}
При использовании явных реализаций интерфейса функции не являются общедоступными в классе. Поэтому для доступа к этим функциям вы должны сначала перенести объект в тип интерфейса или присвоить его объявленной переменной типа интерфейса.
var dual = new Dual();
// Call the ITest.Test() function by first assigning to an explicitly typed variable
ITest test = dual;
test.Test();
// Call the ITest2.Test() function by using a type cast.
((ITest2)dual).Test();
Вы можете реализовать один интерфейс Явно и еще один раз.
blockquote>public interface ITest { void Test(); } public interface ITest2 { void Test(); } public class Dual : ITest, ITest2 { public void Test() { Console.WriteLine("ITest.Test"); } void ITest2.Test() { Console.WriteLine("ITest2.Test"); } }
ITest.Test
будет выполняться по умолчанию.Dual dual = new Dual(); dual.Test(); ((ITest2)dual).Test();
Выход :
Console.WriteLine("ITest.Test"); Console.WriteLine("ITest2.Test");
Вы должны использовать явную реализацию интерфейса
Вы можете реализовать один или оба этих интерфейса явно .
Предположим, что у вас есть эти интерфейсы:
public interface IFoo1
{
void DoStuff();
}
public interface IFoo2
{
void DoStuff();
}
Вы можете реализовать оба типа это:
public class Foo : IFoo1, IFoo2
{
void IFoo1.DoStuff() { }
void IFoo2.DoStuff() { }
}
public interface IDemo1
{
void Test();
}
public interface IDemo2
{
void Test();
}
public class clsDerived:IDemo1,IDemo2
{
void IDemo1.Test()
{
Console.WriteLine("IDemo1 Test is fine");
}
void IDemo2.Test()
{
Console.WriteLine("IDemo2 Test is fine");
}
}
public void get_methodes()
{
IDemo1 obj1 = new clsDerived();
IDemo2 obj2 = new clsDerived();
obj1.Test();//Methode of 1st Interface
obj2.Test();//Methode of 2st Interface
}
public class ImplementingClass : AClass1, IClass1, IClass2
{
public override string Method()
{
return "AClass1";
}
string IClass1.Method()
{
return "IClass1";
}
string IClass2.Method()
{
return "IClass2";
}
}
Поэтому при вызове из другого класса вам придется вводить объект в требуемый интерфейс или абстрактный класс.
ImplementingClass implementingClass = new ImplementingClass();
((AClass1)implementingClass).Method();
Иногда вам может даже понадобиться:
public class Foo : IFoo1, IFoo2
{
public void IFoo1.DoStuff() { }
public void IFoo2.DoStuff()
{
((IFoo1)this).DoStuff();
}
}