【问题标题】:How to append a string or value to an existing column in mysql php如何将字符串或值附加到mysql php中的现有列
【发布时间】:2013-08-24 09:58:49
【问题描述】:
<?php
if(empty($_POST['keyword_submit']) === false && empty($errors) === true)
{
$data_keyword = array(
'keywords'=> $_POST['keywords']
);  
data_keyword($data_keyword);
header('Location: keyword.php');
exit(); 
}
?>
<form method="post" id="mainformkey">
<table width="100%">
<tr>
<td style="padding: 5px;">
<table id="keyword_table" width="100%" border="1" >
<tr>
<th width="60%">
Keywords
</th>
<th  width="10%">
Keyword ID
</th>
<th  width="9%">
Words
</th>
</tr>
<?php
$keyword_sql1 = mysql_query("SELECT * FROM keyword");
while($row_keyword_sql1 = mysql_fetch_array($keyword_sql1)){
$id1 = $row_keyword_sql1[id];
}
if(isset($_POST[keyword_submit_add])){
$values_keyword = $_POST['keywords_extra'];
$ds = mysql_query("UPDATE keyword SET keywords = CONCAT(keywords,$values_keyword) WHERE id = '$id1'");  
}
$keyword_sql = mysql_query("SELECT * FROM keyword WHERE user_id='$session_user_id'");
while($row_keyword_sql = mysql_fetch_array($keyword_sql)){
$id = $row_keyword_sql[id];
$get_keyword = $row_keyword_sql[keywords];
?>
<tr>
<td>
<?php echo $get_keyword;
?>
</td>
<td align="center">
<?php echo '@key-0'.$id;?>
</td>
<td align="center">
<form id="addnew" method="post">
<input type="text" name="keywords_extra">
<input type="submit" name="keyword_submit_add" value="Add keyword">
</form>
</td>
</tr>
<?php
}
?>
</table>
</td>
</tr>
<tr>
<td style="background: #EDEDED; padding: 5px;">
<input type="text"  name="keywords">
<input  type="submit" name="keyword_submit" value="Main Keyword">
</td>
</tr>
</table>
</form>
<?php
function data_keyword($data_keyword)
{
array_walk($data_keyword, 'array_sanitize');
$fields = '`' . implode('`, `', array_keys($data_keyword)) . '`';
$data = '\'' . implode('\', \'', $data_keyword) . '\'';
mysql_query("INSERT INTO `keyword` ($fields) VALUES ($data)");
}
?>

这里有两个提交按钮 1.第一个提交按钮:用户可以输入一个关键字并提交(名称:主要关键字)。 2.第二次提交按钮:第二次他们可以输入关键字到特定行,可以用逗号分隔。

我已经尝试在 mysql 中使用 CONCAT,但只有逗号正在附加,而且在所有行中也是如此,但我需要根据 id 在特定行中。

【问题讨论】:

  • 尝试使用 CONCAT(keywords,',',$values_keyword)
  • 但是发布值的问题兄弟,它没有得到发布的值,这就是问题所在。
  • 您的“keywords_extra”文本字段处于 while 循环中,因此请将其名称更改为“keywords_extra[]”,然后尝试发布您的表单
  • 我也试过了,兄弟不工作。
  • 现在它作为数组数组插入...

标签: php mysql concat


【解决方案1】:

使用concat_ws 代替concat,这样您就可以传入您选择的分隔符。

试试:

$ds = mysql_query("UPDATE keyword SET keywords = CONCAT_WS(' ', keywords, $values_keyword) WHERE id = '$id1'");

您提到的另一个问题与您从$row_keyword_sql1 数组中访问id 有关。请注意,如果数组索引不是变量,则数组索引需要在引号内,在这种情况下,它绝对不是变量,即$id。另外,我认为您希望为$row_keyword_sql1 中的每个 id 执行此查询,而不仅仅是最后一个。

试试:

while($row_keyword_sql1 = mysql_fetch_array($keyword_sql1)){
  $id1 = $row_keyword_sql1['id'];

  if(isset($_POST['keyword_submit_add'])){ // Updated to use index in quotes.
    $values_keyword = $_POST['keywords_extra'];
    $ds = mysql_query("UPDATE keyword SET keywords = CONCAT_WS(' ', keywords,$values_keyword) WHERE id = '$id1'");  
  }
}

更新:

替换以下行:

$id1 = $row_keyword_sql1[id];
...
if(isset($_POST[keyword_submit_add])){ 
...
$get_keyword = $row_keyword_sql[keywords];

与:

$id1 = $row_keyword_sql1['id'];
...
if(isset($_POST['keyword_submit_add'])){ 
...
$get_keyword = $row_keyword_sql['keywords'];

您可能已经知道mysql_ 函数已被弃用,最好尽早切换到mysqlipdo。还要记住,将posted 值直接发送到数据库容易受到 SQL 注入的攻击,您至少应该对它们调用 mysql_real_escape_string,例如$keyword = mysql_real_escape_string($_POST['keywords'])

【讨论】:

  • 兄弟我也试过了,但它只附加逗号而不附加值。
  • 是的,兄弟,我试过了,但它没有得到任何价值,但主提交按钮在这里工作。
  • 我正在测试这个 MySQL 5.5,你的版本是多少?当您指定一个空格时,绝对不应该添加逗号。你的$values_keyword 有什么价值?你能做一个var_dump$values_keyword 吗?
  • 我认为问题在于发布值兄弟,它没有获得发布的值,这就是问题所在。
  • 是的,兄弟,它甚至没有添加逗号。
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 2015-11-12
  • 2019-02-17
  • 2012-12-09
  • 1970-01-01
相关资源
最近更新 更多