Вы должны передать идентификатор ссылки на соединение, а также проверить наличие ошибок.
$con = mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
Также после выполнения запроса вы можете снова проверить на наличие ошибок.
if (!mysqli_query($con,"INSERT INTO a4_todolist (item) VALUES ('$item')")) {
echo("Error description: " . mysqli_error($con));
}
Хорошо в C# 3.0 можно на самом деле записать:
public string Name {get; set;}
Который позволяет Вам быть надлежащими и ленивыми.
Вообще говоря, со свойствами, Вы получаете надлежащую инкапсуляцию. У Вас есть выбор позволить устанавливать значение или получать его, или оба. Используя общедоступного участника, у Вас нет той опции.
Это - вероятно, предпочтение с одной частью, и одна часть, как Ваша команда решает обработать быстрые и грязные определения классов, но я сказал бы, использует свойства для, получают/устанавливают.
Ответить
Кто-либо может ясно ясно сформулировать, когда Вы используете атрибут и когда использовать свойство в дизайне класса?
Вы никогда не должны использовать общедоступный атрибут. Необходимо всегда использовать свойство вместо этого. Это более безопасно и более гибко. Тем не менее люди будут ленивы, и просто использовать общедоступного участника. Однако с C# 3.0 можно использовать более краткий синтаксис для определения свойств, которые должны удовлетворить внутреннюю лень.
Просто введите prop
и хит <tab>
ускорить лень в добавлении свойства.
Свойства более удобны в сопровождении, чем поля, можно инкапсулировать логику в методах set/методах считывания, позволяя Вам скрыть реализацию.
Они также делают рефакторинг легче.
Больше информации:
Просто некоторая дополнительная информация к ответу Alan:
public string Name {get; set;}
совпадает с
private string _Name;
public string Name{
get { return _Name; }
set { _Name = value; }
}
Если Вы хотите запретить функцию множества Имени, Вы можете иметь
общедоступное имя строки {добирается; частный набор;}
Когда Вы обнародовали поле, Вы позволяете пользователю делать независимо от того, что они хотят сделать к полю. Они могут присвоить неожиданные значения, недопустимые значения, значения, которые могут вызвать переполнение и т.д.
Со свойством Вы управляете, позволить ли установку новых значений к полю, массирование значения прежде, чем сохранить его, уведомив заинтересованные стороны об изменении значения поля, и т.д. И та же идея для того, чтобы возвратить значение через метод считывания. Для платформы.NET от 2,0, можно установить средство доступа для метода считывания, метода set. Скажите, Вы только хотите, чтобы у пользователя только был доступ для чтения к полю, затем Вы обнародовали метод считывания, но метод set, частный или защищенный.
В дополнение к уже данным причинам предпочтения свойств существует также много интересного материала в Системе. ComponentModel, чтобы сделать с привязкой данных и уведомлением об изменении, которое только работает со свойствами, а не полями. Например, посмотрите на документацию вокруг PropertyChangedHandler.
Используя свойства, которыми можно управлять, это - безопасность:
public string Foo { protected get; private set; }
Свойства дают простой способ сгенерировать события:
public string Foo
{
get { return _foo; }
}
set
{
bool cancel = false;
if(BeforeEvent != null) // EventHandler<CancelEventArgs> BeforeEvent
{
CancelEventArgs e = new CancelEventArgs();
BeforeEvent(this, e);
cancel = e.Cancel;
}
if(!cancel)
{
_foo = value;
if(AfterEvent != null) // EventHandler<EventArgs> AfterEvent
{
AfterEvent(this, new EventArgs());
}
}
}
Также я часто использую код как это:
string Foo
{
set
{
IsFooSet = value != null;
}
}
bool IsFooSet
{
get { return _isFoo; }
set
{
_isFoo = value;
if(value) // some event raise or controls on form change
}
}