0
<?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)");
}
?>

ここには 2 つの送信ボタンがあります。 1. 最初の送信ボタン: ユーザーは 1 つのキーワードを入力して送信できます (名前: 主なキーワード)。2. 2 番目の送信ボタン: 2 番目に、キーワードを特定の行に入力し、カンマで区切って追加できます。

私はすでにmysqlでCONCATを使用して試しましたが、カンマのみが追加され、それもすべての行に追加されていますが、IDに従って特定の行が必要です。

4

1 に答える 1

0

選択したセパレーターを渡すことができるように、concat の代わりにconcat_wsを使用します。

試す:

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

あなたが言及している他の問題は、配列idからのアクセスに関連しています。$row_keyword_sql1配列インデックスが変数でない場合は引用符で囲む必要があることに注意してください。この場合、それは間違いなく変数ではありません$id$row_keyword_sql1また、最後の IDだけでなく、 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_おそらく、関数が非推奨であることはすでに認識しており、 mysqliまたはpdoのいずれかに早期に切り替えることをお勧めします。また、ed 値をデータベースに直接送信postすると、SQL インジェクションに対して脆弱であることにも注意してください。少なくとも mysql_real_escape_stringそれらを呼び出す必要があります。$keyword = mysql_real_escape_string($_POST['keywords'])

于 2013-08-24T10:02:29.673 に答える