php - 使用 CodeIgniter 进行 SQL 查询时出现问题

标签 php mysql codeigniter

回答

*$this->db->set('page_routes','pageid', $newid);*

应该是

$this->db->update('page_routes', array('pageid' => $newid));

我正在尝试创建一个页面,您可以在其中提交表单,它会根据您选择的内容更新值,我看不到我做错了什么,但在某些时候,我认为我在 MySQL 方面犯了错误命令。

想法是您在顶部选项选择上选择一个页面(友好名称),然后在底部将 ID 设置为另一个 pageID 的值。

它应该实现的效果是用户可以更改特定页面上显示的内容。

问题:根据查询返回,更新运行,但我的 page_routes 表中没有任何更改

我的 View ,这些值是从数据库中提取的,它们填充正确。

<form class="form-horizontal" action="<?php echo site_url('/view/updatepageid'); ?>" method="post">
<fieldset>

<!-- Form Name -->
<legend>Form Name</legend>

<!-- Select Basic -->
<div class="control-group">
  <label class="control-label" for="friendly_name">Page</label>
  <div class="controls">
            <select id="friendlyname" name="friendlyname" class="input-xlarge">
        <?php foreach($pageroutes as $key): ?>
            <option value="<?php echo $key['friendly_name']; ?>"><?php echo $key['friendly_name']; ?></option>
        <?php endforeach; ?>
    </select>
  </div>
</div>

<!-- Select Basic -->
<div class="control-group">
  <label class="control-label" for="selectbasic">Change to:</label>
  <div class="controls">
        <select  onchange="this.form.submit();" id="newid" name="newid">
        <?php foreach($page_data as $key): ?>
            <option value="<?php echo $key['id']; ?>"><?php echo $key['pagetitle']; ?></option>
        <?php endforeach; ?>
        </select>
  </div>
</div>

</fieldset>
</form>

提交到这里

function updatepageid(){
    $this->load->model('view_model');
    $friendlyname = $this->input->post('friendlyname');
    $newid = $this->input->post('newid');


    $query = $this->view_model->setpageid($friendlyname, $newid);

    if($query == TRUE){
        echo 'updated';
    }else { echo 'failed'; }

    var_dump($query);


}

和我的模型 view_model setpageid 函数

function setpageid($friendlyname, $newid){
    $this->db->where('friendly_name', $friendlyname);
    $query = $this->db->set('page_routes','pageid', $newid);
    return $query;
}

如果我 var_dump($query) 它会返回

Object(CI_DB_mysql_driver)[14]
  public 'dbdriver' => string 'mysql' (length=5)
  public '_escape_char' => string '`' (length=1)
  public '_like_escape_str' => string '' (length=0)
  public '_like_escape_chr' => string '' (length=0)
  public 'delete_hack' => boolean true
  public '_count_string' => string 'SELECT COUNT(*) AS ' (length=19)
  public '_random_keyword' => string ' RAND()' (length=7)
  public 'use_set_names' => boolean false
  public 'ar_select' => 
    array (size=0)
      empty
  public 'ar_distinct' => boolean false
  public 'ar_from' => 
    array (size=0)
      empty
  public 'ar_join' => 
    array (size=0)
      empty
  public 'ar_where' => 
    array (size=1)
      0 => string '`friendly_name` =  'aboutus'' (length=28)
  public 'ar_like' => 
    array (size=0)
      empty
  public 'ar_groupby' => 
    array (size=0)
      empty
  public 'ar_having' => 
    array (size=0)
      empty
  public 'ar_keys' => 
    array (size=0)
      empty
  public 'ar_limit' => boolean false
  public 'ar_offset' => boolean false
  public 'ar_order' => boolean false
  public 'ar_orderby' => 
    array (size=0)
      empty
  public 'ar_set' => 
    array (size=1)
      '`page_routes`' => string ''pageid'' (length=8)
  public 'ar_wherein' => 
    array (size=0)
      empty
  public 'ar_aliased_tables' => 
    array (size=0)
      empty
  public 'ar_store_array' => 
    array (size=0)
      empty
  public 'ar_caching' => boolean false
  public 'ar_cache_exists' => 
    array (size=0)
      empty
  public 'ar_cache_select' => 
    array (size=0)
      empty
  public 'ar_cache_from' => 
    array (size=0)
      empty
  public 'ar_cache_join' => 
    array (size=0)
      empty
  public 'ar_cache_where' => 
    array (size=0)
      empty
  public 'ar_cache_like' => 
    array (size=0)
      empty
  public 'ar_cache_groupby' => 
    array (size=0)
      empty
  public 'ar_cache_having' => 
    array (size=0)
      empty
  public 'ar_cache_orderby' => 
    array (size=0)
      empty
  public 'ar_cache_set' => 
    array (size=0)
      empty
  public 'ar_no_escape' => 
    array (size=0)
      empty
  public 'ar_cache_no_escape' => 
    array (size=0)
      empty
  public 'username' => string 'root' (length=4)
  public 'password' => string '' (length=0)
  public 'hostname' => string 'localhost' (length=9)
  public 'database' => string 'cms' (length=3)
  public 'dbprefix' => string '' (length=0)
  public 'char_set' => string 'utf8' (length=4)
  public 'dbcollat' => string 'utf8_general_ci' (length=15)
  public 'autoinit' => boolean true
  public 'swap_pre' => string '' (length=0)
  public 'port' => string '' (length=0)
  public 'pconnect' => boolean true
  public 'conn_id' => resource(50, mysql link persistent)
  public 'result_id' => resource(57, mysql result)
  public 'db_debug' => boolean true
  public 'benchmark' => float 0.00099992752075195
  public 'query_count' => int 1
  public 'bind_marker' => string '?' (length=1)
  public 'save_queries' => boolean true
  public 'queries' => 
    array (size=1)
      0 => string 'SELECT *
FROM (`sessions`)
WHERE `session_id` =  '93072e3813e9ac20216c8cf6affc1d1b'
AND `user_agent` =  'Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0'' (length=171)
  public 'query_times' => 
    array (size=1)
      0 => float 0.00099992752075195
  public 'data_cache' => 
    array (size=0)
      empty
  public 'trans_enabled' => boolean true
  public 'trans_strict' => boolean true
  public '_trans_depth' => int 0
  public '_trans_status' => boolean true
  public 'cache_on' => boolean false
  public 'cachedir' => string '' (length=0)
  public 'cache_autodel' => boolean false
  public 'CACHE' => null
  public '_protect_identifiers' => boolean true
  public '_reserved_identifiers' => 
    array (size=1)
      0 => string '*' (length=1)
  public 'stmt_id' => null
  public 'curs_id' => null
  public 'limit_used' => null
  public 'stricton' => boolean false

如果我错过了任何与帮助解决问题相关的内容,请告诉我,谢谢您的时间,我相信我错过了一些简单的事情,因为我是自学的,我的理解是并不像我希望的那样彻底。

最佳答案

将您的功能更改为:

function setpageid($friendlyname, $newid)
{
    $this->db->where('friendly_name', $friendlyname);
    $this->db->update('page_routes', array('pageid' => $newid));

    return $this->db->affected_rows()>0 ? TRUE : FALSE;
}

这将更新 page_routes 表,特别是 pageid 列,其值为 $newid,其中 Friendly_name = $Friendlyname .

然后,无论是否有行受到影响,它将返回 bool 值 true 或 false。

我希望这就是你的意思?

关于php - 使用 CodeIgniter 进行 SQL 查询时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539749/

相关文章:

c# - 根据MySQL数据库数据显示消息? C#

MySQL 5.6 - 加载数据 infile 截断数据(不涉及空值)

php - Curl 在 Codeigniter 中失败 : OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to fcm. googleapis.com:443

php - Codeigniter $this->db->insert_id() 在 mysqli 上返回 0 但 $this->db->query ('SELECT LAST_INSERT_ID()' ) 有效

php - 更新到 Codeigniter 3 后找不到页面

php - 使用私有(private) API REST (Android + Symfony)

javascript - Unslider 的高度和宽度问题

php - 使用 PHP 对照数组中的值检查值并返回键

php - 同样的结果在 HackerRank 中看起来是错误的

php - 数据库更新时刷新屏幕数据