2014-10-02 3 views
0

У меня есть инструкция mysqli insert в php, которая вообще не будет вставляться. И он не даст мне никакого сообщения об ошибке из mysqli_error, он просто терпит неудачу. Вот код.mysqli не будет вставлять

$con=mysqli_connect("localhost","root","root","my_db"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
function addItems($name, $cost, $type){ 
$sql= "INSERT INTO `items`(`name`, `cost`, `type`) VALUES ('egg', 50, 'harvest')"; 
if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 
} 

Когда я вызываю функцию, она будет создавать переменную sql просто отлично, но затем она умирает. Я могу выбрать из этой таблицы просто отлично, но не вставлять. Пользователь, который используется, имеет полные разрешения.

Я нашел несколько других, у которых, похоже, была одна и та же проблема, но их решения не сработали для меня. Я что-то не так?

+4

'$ con' выходит за рамки возможностей – Steve

+0

Я знаю, что с целыми значениями это не имеет значения, но попробуйте поставить кавычки около 50 на всякий случай. – Dimitri

+0

@ Dimitri, который не исправит. –

ответ

3

Как @steve сказал, $con не входит в сферу действия.

Два способа исправить это.

global;

function addItems($name, $cost, $type){ 
global $con; 

впрыскивать объект

function addItems($name, $cost, $type, $con){ 

Предпочтение следует отдавать ко второму варианту (литьевого объекта). глобальный почти никогда не является хорошей идеей

~ @steve & мир.

+0

Предпочтение отдается второму варианту. глобальный почти никогда не является хорошей идеей – Steve

+0

@Steve согласился! Замечу, что в ответе –

+0

@hd мне придется передать $ con in, когда я вызову функцию? –

Смежные вопросы