Php:MySql附加到现有行

Sta*_*oad -4 php mysql

我试图通过这样做向用户附加Jake的'项目'

UPDATE login SET projects='CONCAT(projects, '$id,')' WHERE username='$name'
Run Code Online (Sandbox Code Playgroud)

但它没有任何作用.有什么好的MySql代码附加到特定行的列的想法?

Fun*_*ner 8

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

  • 有关经过测试/运行的示例,请参阅"脚注".

除了拼写错误CONACT,你需要删除引号和逗号.

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

UPDATE login SET projects='CONACT(projects, '$id,')' WHERE username='$name'
                          ^                     ^  ^
Run Code Online (Sandbox Code Playgroud)
  • 检查查询中的错误,会产生与您目前的用法类似的以下内容:(以"1"和"John"为例).

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

将其修改为:

UPDATE login SET projects = CONCAT(projects, '$id') WHERE username='$name'
Run Code Online (Sandbox Code Playgroud)

或者$id没有引号,如果它确实是一个整数.

UPDATE login SET projects = CONCAT(projects, $id) WHERE username='$name'
Run Code Online (Sandbox Code Playgroud)

根据您通过连接使用查询的方式,将类似于此类和MySQLi方法:

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

                 or die(mysqli_error($connection));
Run Code Online (Sandbox Code Playgroud)

同时确保两个变量确实已设置并正确填充.

如果来自HTML表单,请确保它们具有名称属性并且方法正确.

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

如果来自一个表格: $name = $_POST['username'];

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

如果没有,那么这可能意味着某处有错误,但你可能没有检查它们.

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

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

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

错误报告:http://php.net/manual/en/function.error-reporting.php

另请参阅此链接以选择您的MySQL API:


错误报告添加到文件的顶部,这将有助于查找错误.

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

// rest of your code
Run Code Online (Sandbox Code Playgroud)

旁注:错误报告应该只在暂存中完成,而不是生产.


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

另请参阅这些链接 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.";
}
Run Code Online (Sandbox Code Playgroud)

边注: