2012-05-02 6 views
0

Я формирую это редактирование таблицы в базе данных. Однако пользователь не может передать изображение, поэтому, если они не хотят обновлять это поле. Я пробовал несколько способов сделать это, но никто не работает. Есть ли простой способ? Благодарю.if statement in php mysql

if ($_POST["image"]!=='') { 
     $image= "image=%s"; 
     $imageValue = "GetSQLValueString(".$_POST['image'].", 'text'),"; 
}; 

$insertSQL = sprintf("UPDATE taxi SET name=%s, taxi_link=%s, ". $image." WHERE id=%s", 
        GetSQLValueString($_POST['name'], "text"), 
        GetSQLValueString($_POST['link'], "text"), 
        $imageValue, 
        GetSQLValueString($_POST['id'], "int")); 
+0

Ваша выше попытка не работает по одной причине. '' После 'taxi_link =% s'. Удалите это ',' и измените вторую строку на '$ image =", image =% s ";'. –

+0

спасибо за указатель, есть еще одна проблема с этим в том, что $ imageValue пуст, но все равно помещает пустую запись, дающую ошибку –

+0

Я исправил ваш запрос в нижнем ответе. –

ответ

1

При использовании такой структуры, как CodeIgniter вы можете просто:

$arr_values = array('name' => $_POST['name'], 
        'taxi_link' => $_POST['link']); 

if (! $_POST["image"]) 
    $arr_values['image'] = $_POST['image']; 

$this->db->update($arr_values, array('id' => $_POST['id'])); 

обновление() просто обрабатывает массив, и вы можете просто добавить дополнительные значения в массиве в зависимости от условий.

Лично я создал свою собственную функцию, подобную этой, которая отлично работает с добавлением и использованием значений массива.

Фиксированный запрос:

$image = ''; 
if ($_POST["image"] !== '') 
     $image= ", image=".GetSQLValueString($_POST['image'], 'text'); 

$insertSQL = sprintf("UPDATE taxi SET name=%s, taxi_link=%s {$image} WHERE id=%s", 
        GetSQLValueString($_POST['name'], "text"), 
        GetSQLValueString($_POST['link'], "text"), 
        GetSQLValueString($_POST['id'], "int")); 
+0

жаль, что здесь не вариант. –

+0

Отметьте свой ответ. В нем говорится, что не так с вашим примером. –

+0

Еще раз спасибо за помощь, он работает, если я оставляю поле изображения пустым, но когда я выбираю изображение, я получаю ошибку. Слишком мало аргументов в такси-edit.php в строке 49 Запрос был пуст –

2

Если я правильно вас понимаю, не могли бы вы поместить все это в утверждение if?

if ($_POST["image"]!=='') { 
     $image= "image=%s"; 
     $imageValue = "GetSQLValueString(".$_POST['image'].", 'text'),"; 
     $insertSQL = sprintf("UPDATE taxi SET name=%s, taxi_link=%s, ". $image." WHERE id=%s", 
        GetSQLValueString($_POST['name'], "text"), 
        GetSQLValueString($_POST['link'], "text"), 
        $imageValue, 
        GetSQLValueString($_POST['id'], "int")); 
     //execute query 
} else { 
    //tell the user nothing happened 
} //no semicolon required 

Так что теперь он будет только сборки и выполнить запрос, если задан образ, и вы можете сделать что-то другое, если это не указано

+0

Я, хотя это было то, что он имел в виду первым, но он имеет в виду, что есть более элегантный (и функциональный) способ обновления столбца изображения, который он уже делает. –

+0

Да, подумал об этом, но задавался вопросом, был ли способ без написания нескольких запросов. –