Php 将列值复制到同一表中的另一列
我正在尝试将标题列复制到数据库中的关键字列,因此关键字将从标题中自动插入 例如,我想在每个单词前加逗号“,”Php 将列值复制到同一表中的另一列,php,mysql,copy,Php,Mysql,Copy,我正在尝试将标题列复制到数据库中的关键字列,因此关键字将从标题中自动插入 例如,我想在每个单词前加逗号“,” " It's my first program " 它会变成 " It's, my, first, program, " 这就是我写的代码 <?php // $id =mysql_insert_id; $select_posts = mysql_query("SELECT * FROM `posts`"); while($row = mysql_fetc
" It's my first program "
它会变成
" It's, my, first, program, "
这就是我写的代码
<?php
// $id =mysql_insert_id;
$select_posts = mysql_query("SELECT * FROM `posts`");
while($row = mysql_fetch_array($select_posts)){
$id = $row['post_id'];
$text = $row['post_title'];
$delim = ' \n\t,.!?:;';
$tok = strtok($text, $delim);
while ( $tok !== false){
echo $tok1 = $tok.',';
mysql_query("UPDATE `posts` SET `post_keywords` = '$tok1' WHERE `post_id` = $id ");
$tok = strtok($delim);
}
}
?>
只需一个查询即可:
UPDATE `posts` SET post_keywords = REPLACE(post_title, ' ', ',');
计算值:
... SET post_keywords = CONCAT(post_keywords, '$tok1')
请注意,您很容易受到攻击。仅仅因为$tok1值来自数据库并不意味着在查询中重用是安全的…我认为您需要将更新查询移出内部while循环,并对$tok1
变量使用串联。此外,我不确定您是否需要此值:$tok=strtok($delim)代码>在内部while循环中。我以前尝试过移动它们,但没有成功,谢谢。这是一个测试文件,用于确保代码正常工作,将使用tmlenties(strip_标记(mysql_real_escape_string())函数内部。错误。sql转义是您最后要做的事情。如果转义后损坏字符串,则可能会撤消转义。您不应该使用mysql_*()函数。切换到PDO和占位符,然后你就不必再担心转义了。你的代码工作了,但它将所有列值插入到了一起。那么,你还期望什么呢?你在查询中使用了post_关键字
,所以我在这里也使用了它。如果每个$tok1都属于一个单独的列,那么你的sampl电子代码是无用的。。。