php 写入数据库时Call to a member function bind_param() on a non-object

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests VALUES(?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// 设置参数并执行
$firstname = "John";
$lastname = "Doe";
$email = "[email protected]";
$stmt->execute();
$firstname = "Mary";
$lastname = "Moe";
$email = "[email protected]";
$stmt->execute();
$firstname = "Julie";
$lastname = "Dooley";
$email = "[email protected]";
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>

 运行时报错:

Call to a member function bind_param() on a non-object

原因:bind_param 的第二个参数是起引用传递的直接写成字符串,这是在 php 5.3 及以后是不允许的
解决方法:将  $stmt = $conn->prepare("INSERT INTO myguests VALUES(?,?,?)");改成$stmt = $conn->prepare("INSERT INTO myguests(firstname, lastname, email) VALUES(?,?,?)");
时间: 2024-10-12 20:37:45

php 写入数据库时Call to a member function bind_param() on a non-object的相关文章

Fatal error: Uncaught Error: Call to a member function bind_param() on boolean

1.2019年10月22日 PHP写mysqli 预编译查询的时候报错. Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in E:\www\get.php:40 Stack trace: #0 {main} thrown in E:\www\get.php on line 40 本次出现原因:SQL语句有错误,多半是语法错误. 原文地址:https://www.cnblogs.com/

call to member function bind_param() on boolean...........

:  Uncaught Error: Call to a member function fetch_all() on boolean in .... Stack trace: #0 {main}   thrown in ..... 出现这种错误一般是在查询语句中表名不匹配

在用UEditor往后台传数据写入数据库时,出现错误:从客户端(NewsContent=&quot;&lt;p&gt;&lt;img src=&quot;http://...&quot;)中检测到有潜在危险的 Request.。。。

解决办法: 把传数据的方式换了一下,加上 [ValidateInput(false)]就不报错了. 建议看看这个:http://www.360doc.com/content/10/0521/15/466494_28756529.shtml 觉得写得很好.

批量插入数据, 将DataTable里的数据批量写入数据库的方法

大量数据导入操作, 也就是直接将DataTable里的内容写入到数据库 通用方法: 拼接Insert语句, 好土鳖 1. MS Sql Server:   使用SqlBulkCopy 2. MySql: adapter.update()批量更新 MySqlBulkLoader, 这个是从文件里边到的, 有个实现是先将DATATable编程CSV文件, 在用MySqlBulkLoader导入MySql 参考文章: http://theonetechnologies.com/outsourcing/

微信登录时用户信息无法写入数据库

问题: 微信登录时,由于用户名中带有特殊字符,无法写入数据库 环境: linux/nginx/mysql/php 做了一个公众号网页开发的项目,拿一个网上开源的商城进行二开,框架是TP5.最近碰到一个问题,微信登录的时候,有的用户会无法登录网页,有的用户又能够正常登录,通过日志定位到了问题,在用户初次登录的时候,MySQL写入用户信息的时候出错了.项目中MySQL数据库的编码是utf8mb4,但创建表的时候又给了utf8的编码,而utf8编码最多三个字节,,EMOJI表情或者某些特殊字符的编码是

RFID射频卡超市购物结算系统问题记录--写入卡片时,后台php无法操作数据库

后台管理人员要给每件商品贴上RF卡作为唯一标识,所以要先给对应的RFID卡中写入响应的信息,我这里为了便于模拟演示只写入商品编号,价格,名称这几个字段,然后要把已经写入的商品上传后台,由后台写入数据库中的商品表(Goods)中,其中VB访问后台的代码如下: '把写入卡片的内容上传服务器,由服务器保存在数据库中,后期需要修改url等内容 Dim sssa As New WinHttpRequest Dim urlString As String = "http://mzwapitest.appli

关闭数据库时SHUTDOWN: waiting for active calls to complete.处理

有时候在关闭数据库时,发出shutdown immediate;命令后一直未关闭,查看ALERT日志,在等待一段时间后日志中有提示: SHUTDOWN: waiting for active calls to complete. 原因是有些进程无法被PMON进程清理,导致SHUTDOWN时无法关闭而HANG住. ==>根据观察,在ORACLE10G及以上版本,会是如下提示: Active call for process 12345 user 'oracle' program '[email p

Log4j写入数据库详解

log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据库,甚至能通过socket输出.本节主要讲述如何将日志信息输入到数据库(可以插入任何数据库,在此主要以MSSQL为例进行详解).用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我们的日志信息写入数据库:也可以扩展JDBCAppender类,就是将JDBCAppende

C#使用读写锁三句代码简单解决多线程并发写入文件时提示“文件正在由另一进程使用,因此该进程无法访问此文件”的问题

在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件. 选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因为同一个文件并不允许多个线程同时写入,否则会提示“文件正在由另一进程使用,因此该进程无法访问此文件”. 这是文件的并发写入问题,就需要用到线程同步.而微软也给进程同步提供了一些相关的类可以达到这样的目的,本文使用到的 System.Threadin