php to mysql данные теряются при изменении последовательности кода

0

У меня странная вещь, происходящая с моим вводом в базу данных mysql из скрипта php. Я сократил свой код до минимума, чтобы показать, что происходит. Когда я запускаю первый фрагмент кода ниже данных хранилища, "Fruitveg" не попадает в базу данных. Вместо этого берется буква "k", которая была взята из пропусков var $ item [2].

Но если я изменил порядок события на второй фрагмент ниже и сделаю переменную store первой частью этого кода, он будет работать нормально, а хранилище Fruitveg будет помещено в базу данных в порядке. Я попытался выяснить, что не так, но не может получить ответ.

Любая помощь пожалуйста

Snippet One

  }
  catch (PDOException $e)
  {
      echo 'Error: ' . $e->getMessage();
      exit();
  }

  $sql = "INSERT INTO shopping_list (item, store, qty, prefex ) VALUES 
  (:item, 
  :store, :qty, :prefex )";
  $stmt = $pdo->prepare($sql);
  $item[0] = "2";
  $item[1] = "g";
  $item[2] = "leaks";
  $item[3] = "Fruieveg";
  echo $item[3];

  $qty = $item[0];
  $prefex = $item[1];
  $item = $item[2];
  $store = $item[3]; #when here only letter 'k' is inputted into mysql
  $stmt->bindParam(':store', $store);
  $stmt->bindParam(':item', $item);
  $stmt->bindParam(':qty', $qty);
  $stmt->bindParam(':prefex', $prefex);
  $stmt->execute();
  $conn = null; 
  ?>

Фрагмент 2

<?php
# Connect to data base
try
{
    $pdo = new PDO('mysql:host=localhost; dbname=shopping', 'phpmyadmin', 
'Odiham');

}
catch (PDOException $e)
{
    echo 'Error: ' . $e->getMessage();
    exit();
}

$sql = "INSERT INTO shopping_list (item, store, qty, prefex ) VALUES 
(:item, :store, :qty, :prefex )";
$stmt = $pdo->prepare($sql);
$item[0] = "2";
$item[1] = "g";
$item[2] = "leaks";
$item[3] = "Fruieveg";
echo $item[3];

$store = $item[3]; #when here only letter 'k' is inputted into mysql
$qty = $item[0];
$prefex = $item[1];
$item = $item[2];
$stmt->bindParam(':store', $store);
$stmt->bindParam(':item', $item);
$stmt->bindParam(':qty', $qty);
$stmt->bindParam(':prefex', $prefex);
$stmt->execute();
$conn = null;   
?>
  • 1
    $item = $item[2]; Вы хотели это сделать? Ой, подождите, я думаю, я вижу.
  • 0
    Я не могу поверить в это, я смотрел на это всю ночь и пропустил это. Я думаю, что я ослеп. Я изменил $ item на другую переменную, и она работает, спасибо
Теги:

1 ответ

0
Лучший ответ

Вы заменяете свой исходный массив $item одной из своих ячеек:

$item = $item[2]; // $item becomes leaks
$store = $item[3]; // $store gets 4th letter from leaks - 'k'

Когда вы меняете заказ, вы правильно устанавливаете $ store из исходного массива $ item перед заменой переменной $ item, поэтому почему это работает.

Для поля БД попробуйте использовать что-то вроде name вместо элемента... тогда вы можете избежать этой случайной перезаписи

  • 0
    Спасибо, я пропустил это, и смотрел на это всю ночь, я думаю, что мне нужны новые очки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню