【问题标题】:If nothing is found for field, create new field如果没有找到字段,则创建新字段
【发布时间】:2012-10-13 09:39:48
【问题描述】:

这里是PHP新手

我有一个名为“主题”的 mysql 表,我正在根据表单的结果(通过 GET 在 URL 中)从表中提取页面信息

如果 URL 不存在,我希望表格能够创建一个新条目,其中包含填充的 URL 中的主题名称

$topic_name 将是我在新主题名字段中输入的内容

到目前为止我的代码:

            $topic_name = strtolower(mysql_real_escape_string($_GET['t']));

//look for info
$topic_info = mysql_query("SELECT * FROM topics WHERE topicname = '$topic_name' LIMIT 1");

if (mysql_numrows($topic_info)<=0) {
//insert record
$SQL='insert into topics (topicname) values ("'.$topic_name.'")';
mysql_query($SQL);
$t_desc='NEW TOPIC : '.$topic_name;
} 
else {
//do as normal (without unnessecary loop)
$g=mysql_fetch_array($topic_info);

$t_desc = $g['desc'];               
}    

编辑:对不起,我认为我解释得不好,结果来自表单的 GET,所以 url.com/topic?=BLAH

blah 将是我想要创建的字段的名称(如果它不存在)。

表格有一个自动递增的“ID”(主键)

【问题讨论】:

  • 对不起,我认为我解释得不好,结果来自表单的 GET,所以 url.com/topic?=BLAH blah 将是我想要的字段名称如果它不存在则创建。该表有一个自动递增的“ID”(主键)
  • 可能会产生误导。如果主题不存在到表中,您是想用新字段更改表还是想再添加一行??
  • 如果主题不存在我想从本质上创建它,然后重新访问主题以检索信息

标签: php mysql


【解决方案1】:

如果我理解你是正确的:

$topic_name = (isset($_GET['t'])) ? strtolower(mysql_real_escape_string($_GET['t'])) : '';

//look for info
$topic_info = mysql_query("SELECT * FROM topics WHERE topicname = '$topic_name' LIMIT 1");

if (mysql_num_rows($topic_info)<=0) {
    //insert record
    //UPDATE
    //$SQL='insert into topics (topicname) values ("'.$topic_name.'")';
    $SQL='insert into topics (topicname, `desc`) values '.
           '("'.$topic_name.'", "NEW TOPIC DESC")';
    mysql_query($SQL);
    $t_desc='NEW TOPIC : '.$topic_name;
} else {
    //do as normal (without unnessecary loop)
    $g=mysql_fetch_array($topic_info);
    $t_desc = $g['desc'];               
} 

【讨论】:

  • 这似乎工作和创建,虽然当我去重新访问那个 URL 时,东西是空白的,我已经更新了原始代码
  • 您可能还需要在提交时检查 $_GET 参数是否为空。否则,您将面临插入空值的风险。除非表格不接受空字段。
  • 啊,我明白了,如果我(例如)想在页面上添加一个查看计数器,那会放在“else”中吗?另外,我会怎么处理空的 $_GET ?感谢您对此的帮助
  • @davidkonrad mysql_numrows 这是错误的。应该是 mysql_num_rows()
  • 嗯,这段代码似乎并没有创建新字段,它会检索一个已经创建的字段
【解决方案2】:

尝试如下

$topic_info = mysql_query("SELECT * FROM topics WHERE topicname = '$topic_name' LIMIT 1");

$count = mysql_num_rows($topic_info);

if($count <= 0){
  // do insert query
}
else {
// loop through you result and display record
  while($g = mysql_fetch_array($topic_info)){
    $t_desc = $g['desc'];               
  } 
}

注意:新开发最好使用PDO或Mysqli lib,防止mysql注入攻击

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多