2012-05-29 1 views
0

Я представляю форму и вставляю valuse в свой mysql db. Одним из элементов формы является выбор с параметрами, такими как 11 # 120 # 12 (id # cost # months).php explode возвращает неправильное значение

я выполнить следующее:

$plan = explode("#", $_POST['symb']); 
$plan = $plan[0]; 
$cost = $plan[1]; 

, а затем отправить на мой дб

echo $insertSQL = sprintf("INSERT INTO users (username, plan, cost) VALUES (%s, %s, %s)", 
         GetSQLValueString($_POST['username'], "text"), 
         GetSQLValueString($plan, "text"), 
         GetSQLValueString($cost, "int")); 

Проблема заключается в том, что $ стоимость получает неверное значение, вместо 120 он получает 1 в качестве значения , Где ошибка? (размещенная заявка sql является только частью фактического запроса только для демонстрационных целей)

+10

Вы переписываете '$ plan' в строке 2 –

ответ

4

Не перезаписывайте $plan со строковым значением, прежде чем пытаться извлечь $cost из массива, который вы изначально сохранили в нем.

Либо измените первый $plan на $plan = $plan[0]; (и измените каждую ссылку на него позже в сценарии), либо переместите эту строку так, чтобы она появилась после $cost = $plan[1];.

(я бы рекомендовал первый вариант для ясности) .`

+0

Вау! Наверное, я должен сделать перерыв, потому что не видел абсолютно очевидного ... спасибо, что указал мне на это. – bikey77

0
$plan = explode('#',$_POST['symb']); 
$p = $plan[0]; 
$cost = $plan[1]; 
0

В строке 2, $ плана присваивается "11" (который был $ плана [0]), а в строке 3, $ plan [1] ссылается на второй символ в строке, которая равна «1».

Выше уже говорилось, как это исправить.