Php:MySql附加到现有行

时间:2015-05-27 04:05:42

标签: php mysql

我试图向用户追加杰克的项目'通过这样做

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

但它什么都没做。有什么好的MySql代码附加到特定行的列?

2 个答案:

答案 0 :(得分:8)

前言。请完整回答我的答案,而不仅仅是代码。

  • 有关经过测试/运作的示例,请参阅“脚注”。

CONACT的拼写错误外,您还需要删除引号和逗号。

在为函数使用引号时传递文字字符串。

UPDATE login SET projects='CONACT(projects, '$id,')' WHERE username='$name'
                          ^                     ^  ^
  • 检查查询中的错误,会产生与您目前的用法相似的内容:(以“1”和“John”为例)。
  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'1'附近使用正确的语法'''在第2行使用用户名='John''

将其修改为:

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表单,请确保它们具有名称属性并且方法正确。

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

如果来自表单:$name = $_POST['username'];

另外,由于我们不知道您使用哪个MySQL API进行连接,或者您是否已成功建立与数据库的连接,这只是您所知道的,所以如果您这样做,那就很好。

如果没有,那么这可能意味着某处存在错误,但您可能没有检查它们。

旁注:当你告诉我们“它不起作用”时,这对任何人都无济于事。

我们需要知道确切的错误消息,如果您将检查它们。

以下是您可以查看的一些链接,并根据您的MySQL API使用错误检查方法。

错误报告: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

旁注:错误报告应该仅在暂存时完成,而不是生产。

我相信我已经给了你足够的信息。尝试不同的方法;你不会破坏任何东西。

另请参阅CONCAT

上的这些链接

脚注:(经过测试的代码)

如上所述并使用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.";
}

旁注:

答案 1 :(得分:1)

您的sql查询中充满了拼写错误...将您的查询更改为:

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