2015-05-27 7 views
-4

Я пытаюсь добавить к пользователю Джейка «проекты», делая этоPhp: MySql добавить к существующей строке

UPDATE login SET projects='CONCAT(projects, '$id,')' WHERE username='$name' 

Но он ничего не делает. Любые идеи, что хороший код MySql должен добавить в столбец определенной строки?

+4

ли это на самом деле говорят «CONACT» вместо «CONCAT»? –

+0

"UPDATE login SET projects = CONCAT (проекты, $ id) WHERE username = $ name"; –

+1

Уверен, он ничего не делает? Уверен, что возникли ошибки – Andrew

ответ

8

Предисловие. Просьба передать мой ответ целиком, а не только код.

  • Обратитесь к «Сноскам» для испытанного/рабочего примера.

Кроме опечатка для CONACT, вам необходимо удалить кавычки и запятые.

Вы передаете литеральную строку при использовании кавычек для функции.

UPDATE login SET projects='CONACT(projects, '$id,')' WHERE username='$name' 
         ^     ^^ 
  • Проверка на наличие ошибок в запросе, произвел бы нечто подобное следующему с настоящим использованием: (с помощью «1» и «Джон» в качестве примера).

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «1») «WHERE имя пользователя =„John“» в строке 2

Изменить его читать как:

UPDATE login SET projects = CONCAT(projects, '$id') WHERE username='$name' 

или $id без кавычек, если это действительно целое число.

UPDATE login SET projects = CONCAT(projects, $id) WHERE username='$name' 

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

$query = mysqli_query($connection, 
       "UPDATE login 
       SET projects = CONCAT(projects, '$id') 
       WHERE username='$name'") 

       or die(mysqli_error($connection)); 

В то время как убедившись, что обе переменные действительно установлены и правильно заселение ,

Если вы используете HTML-форму, убедитесь, что для них есть атрибуты имени и что метод верен.

Ie: <input type="text" name="username">

Если из формы: $name = $_POST['username'];

Plus, так как мы не знаем, которые MySQL API вы используете, чтобы соединиться с, или, если вы успешно установили соединение с базой данных , что вам известно только, так что если вы, великий.

Если нет, то это может означать, что есть ошибки где-то, но вы, вероятно, не проверяете их.

Sidenote: Когда вы сообщите нам «Это не работает», это никому не помогает.

Нам нужно знать точное сообщение об ошибке, если и когда вы будете проверять их.

Вот несколько ссылок, которые вы можете изучить и использовать метод проверки ошибок в соответствии с вашим API-интерфейсом MySQL.

Сообщения об ошибках: http://php.net/manual/en/function.error-reporting.php

Смотрите также ссылку, чтобы выбрать MySQL API:


Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Sidenote: Сообщение об ошибках должно выполняться только в стадии постановки и никогда не выпускаться.


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

Также см эти ссылки на CONCAT


Сноски: (протестировано код)

Следующая работала flawle ssly, как было предложено выше, и используя mysqli_affected_rows().

<?php 
$DB_HOST = 'xxx'; // Replace 
$DB_USER = 'xxx'; // with 
$DB_PASS = 'xxx'; // your 
$DB_NAME = 'xxx'; // own 

$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if($db->connect_errno > 0) { 
    die('Connection failed [' . $db->connect_error . ']'); 
} 

$id = 1; // wrap in quotes if it's a string, like "string_1". 
$name = "John"; // an example only 

$query = mysqli_query($db, 
       "UPDATE login 
       SET projects = CONCAT(projects, '$id') 
       WHERE username='$name'") 

       or die(mysqli_error($db)); 

if(mysqli_affected_rows($db)){ 
    echo "Successfully updated the database."; 
} 

else{ 
    echo "Sorry, check your logs."; 
} 

Sidenote:

1

ваш запрос полна опечатка-ошибок ... Изменить запрос на:

"UPDATE login SET projects=CONCAT(projects, $id) WHERE username='".$name."'"; 
Смежные вопросы