【问题标题】:Error on INSERT: Call to a member function query() on a non-object [duplicate]插入错误:在非对象上调用成员函数 query() [重复]
【发布时间】:2018-01-06 07:29:40
【问题描述】:

我有两个表 - oldtbldata 和 tbldata,并且想在第一个表中读取一行并将其插入到第二个表中。旧表中不存在一个新列 txtNotes,我想将其设置为空格。

oldtbldata 中有 tbldata 中不存在的行,我想将这些行作为新行插入到 tbldata 中。

我已经建立了一个原始连接 (conn) 来对匹配的 txtWoodIDcode 条目进行初始搜索,如果找到不存在的行,我想使用 conn2 将其添加到 tbldata。

初始代码为:

    $conn = mysql_connect('localhost', '***', '*****');
if(! $conn )
  {
  die('Could not connect: ' . mysql_error());
  }

echo "Conn connected<br>";


$sql = 'SELECT oldtxtWoodIDcode FROM oldtbldata';
mysql_select_db('scw-db');

如果搜索没有找到 ID,则转到此代码:

    {
    $conn2 = mysql_connect('localhost', '***', '***');
    if(! $conn2 )
      {
      die('Could not connect  #2: ' . mysql_error());
      }

    echo "Conn2 connected<br>";
    $sql_new = 'SELECT txtWoodIDcode FROM tbldata';
    mysql_select_db('scw-db');
    $retval = mysql_query( $sql, $conn2 );
    if(! $retval )
    {
      die('Could not get data from conn2: ' . mysql_error());
    }

    $sql_new = "INSERT INTO tbldata 
    (
        'txtWoodIDcode',
        'txtProductCode',
        'txtNotes',
        'txtSpecies',
    )
    VALUES 
    {
        'oldtxtWoodIDcode',
        'oldtxtProductCode',
        ' ',
        'oldtxtSpecies',
    )";

    echo "past the insert code<br>";

    if ($conn2->query($sql_new) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql_new . "<br>" . $conn2->error;
    }               
    mysql_close($conn2);
}

我得到的错误是在 if ($conn2->query($sql_new) === TRUE) 行:

致命错误:在非对象上调用成员函数 query()

是的,我收到“Conn2 connected”消息,所以我应该连接到 DB。

我是 PHP/MySQL 的新手,并且正在使用旧版本 - 所以我知道我需要升级 - 但以后需要这样做。我现在只需要让这个代码工作。

【问题讨论】:

  • Mysql api 已弃用停止使用它。
  • mysql_*更改为mysqli_,并在Values之后将{替换为(
  • 你有很多错误,一个是在列名周围使用'单引号,使用`反引号'单引号用于值,

标签: php mysql insert


【解决方案1】:

你有几个错误 - 你在 mysql 中没有 ... $conn2->query ... 使用 mysql_query 函数 - 在查询中,您对字段名称 ' 使用单引号 ...您需要使用 ` ,并删除 comma , 之后kast 字段

$conn2 = mysql_connect('localhost', '***', '***');
if(! $conn2 )
  {
  die('Could not connect  #2: ' . mysql_error());
  }

echo "Conn2 connected<br>";
$sql_new = 'SELECT txtWoodIDcode FROM tbldata';
mysql_select_db('scw-db');
$retval = mysql_query( $sql, $conn2 );
if(! $retval )
{
  die('Could not get data from conn2: ' . mysql_error());
}

$sql_new = "INSERT INTO tbldata 
(
    `txtWoodIDcode`,
    `txtProductCode`,
    `txtNotes`,
    `txtSpecies`
)
VALUES 
{
    'oldtxtWoodIDcode',
    'oldtxtProductCode',
    ' ',
    'oldtxtSpecies'
)";

echo "past the insert code<br>";

if ($conn2->query($sql_new) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql_new . "<br>" . $conn2->error;
}               
mysql_close($conn2);

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多