我试图向用户追加杰克的项目'通过这样做
UPDATE login SET projects='CONCAT(projects, '$id,')' WHERE username='$name'
但它什么都没做。有什么好的MySql代码附加到特定行的列?
答案 0 :(得分:8)
前言。请完整回答我的答案,而不仅仅是代码。
除CONACT
的拼写错误外,您还需要删除引号和逗号。
在为函数使用引号时传递文字字符串。
UPDATE login SET projects='CONACT(projects, '$id,')' WHERE username='$name'
^ ^ ^
您的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.";
}
旁注:
mysqli
with prepared statements或PDO with prepared statements,它们更安全。答案 1 :(得分:1)
您的sql查询中充满了拼写错误...将您的查询更改为:
"UPDATE login SET projects=CONCAT(projects, $id) WHERE username='".$name."'";