在我的本地/开发环境中,MySQLi查询执行正常.但是,当我在我的Web主机环境中上传它时,我收到此错误:
致命错误:在...中的非对象上调用成员函数bind_param()
这是代码:
global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Run Code Online (Sandbox Code Playgroud)
为了检查我的查询,我试图通过控制面板phpMyAdmin执行查询,结果是OK.
我相信所有这些(甚至die()或者die(0))都是相同的.如果它们不相同,哪个成功退出脚本?如果它们相同,是否有任何首选标准表示脚本成功完成?我倾向于使用exit;.
编辑:即使我在我的问题中说,所有的答案都" die()和exit()相同".我更新了标题,希望更清楚,这不是我的问题.我想从命令行脚本中清楚地表明成功.
根据下面的代码,我用于常规的mysql,我怎么能将它转换为使用mysqli?
是否像更改**mysql _query($ sql)一样简单 ; 到mysqli _query($ sql) ; ?**
<?PHP
//in my header file that is included on every page I have this
$DB["dbName"] = "emails";
$DB["host"] = "localhost";
$DB["user"] = "root";
$DB["pass"] = "";
$link = mysql_connect($DB['host'], $DB['user'], $DB['pass']) or die("<center>An Internal Error has Occured. Please report following error to the webmaster.<br><br>".mysql_error()."'</center>");
mysql_select_db($DB['dbName']);
// end header connection part
// function from a functions file that I run a mysql query through in any page.
function executeQuery($sql) { …Run Code Online (Sandbox Code Playgroud) 我使用以下脚本来处理表单以向我的网站添加信息.我遇到的问题是,当我提交表单时,没有任何内容被提交到数据库,并且没有错误.如何向查询添加错误报告?
<?php
if (isset($_POST['itemdescription'])) {$itemdescription = $_POST['itemdescription'];}else {$itemdescription = '';}
if (isset($_POST['itemnumber'])) {$itemnumber = $_POST['itemnumber'];}else {$itemnumber = '';}
if (isset($_POST['sellerid'])) {$sellerid = $_POST['sellerid'];}else {$sellerid = '';}
if (isset($_POST['purchasedate'])) {$purchasedatepre = $_POST['purchasedate'];$date = DateTime::createFromFormat("D F d, Y", $purchasedatepre);$purchasedate = date('Y-m-d',strtotime($purchasedatepre));}else {$purchasedatepre = ''; $purchasedate = '';}
if (isset($_POST['otherinfo'])) {$otherinfo = $_POST['otherinfo'];}else {$otherinfo = '';}
if (isset($_POST['numberofitems'])) {$numberofitems = $_POST['numberofitems'];}else {$numberofitems = '';}
if (isset($_POST['numberofitemsused'])) {$numberofitemsused = $_POST['numberofitemsused'];}else {$numberofitemsused = '';}
if (isset($_POST['isitdelivered'])) {$isitdelivered = $_POST['isitdelivered'];}else {$isitdelivered = '';}
if (isset($_POST['price'])) {$price …Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试学习使用预准备语句的正确方法,以避免SQL注入等.
当我执行脚本时,我从我的脚本中得到一条消息,说0行已插入,我希望这可以说1行插入,当然更新表.我对我准备好的陈述并不完全确定,因为我做了一些研究,我的意思是它因例子而异.
当我更新我的表时,我需要声明所有字段还是只更新一个字段?
任何信息都会非常有用.
的index.php
<div id="status"></div>
<div id="maincontent">
<?php //get data from database.
require("classes/class.Scripts.inc");
$insert = new Scripts();
$insert->read();
$insert->update();?>
<form action="index2.php" enctype="multipart/form-data" method="post" name="update" id="update">
<textarea name="content" id="content" class="detail" spellcheck="true" placeholder="Insert article here"></textarea>
<input type="submit" id="update" name="update" value="update" />
</div>
Run Code Online (Sandbox Code Playgroud)
类/ class.Scripts.inc
public function update() {
if (isset($_POST['update'])) {
$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?");
$id = 1;
/* Bind our params */
$stmt->bind_param('is', $id, $content);
/* Set our params */
$content = isset($_POST['content']) ? $this->mysqli->real_escape_string($_POST['content']) …Run Code Online (Sandbox Code Playgroud) 我一直在看这段代码一段时间,我看不出问题出在哪里.我一直在阅读整个StackOverflow,但仍无法看到我的错误.
<?php
mysqli_connect("localhost","root","","web_table");
mysql_select_db("web_table") or die(mysql_error());
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
echo "<p> Connection Successful!"
mysqli_query('INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)');
echo "<p>Insert successfull";
?>
Run Code Online (Sandbox Code Playgroud)
错误在第13行的某处,那就是mysqli_query('insert....我试图用http://www.w3schools.com/php/php_mysql_insert.asp来帮助自己,但这对我帮助不大.
function save($gmt, $name, $address, $phone, $remark)
{
$query= "INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES ('$gmt', '$name', '$address', '$phone', '$remark')";
mysql_query($query);
}
Run Code Online (Sandbox Code Playgroud)
这里的地址,电话和备注可以是NULL值.我需要它,以便当我将null参数传递给我的函数时,它在数据库中存储一个空值(NULL).我需要知道这样做的最佳解决方案是什么.
谢谢.
我有一个带输入字段的表单,这个输入包含一个下拉菜单,如果用户输入值,则从数据库中读取信息,当他到达下拉菜单时,他找不到他想要的东西,他会转到另一个页面添加此信息下拉菜单,然后转到第一页继续输入我需要的信息如果他去另一个页面添加信息到下拉菜单我怎么能保留这些信息以及如何将信息添加到下拉菜单中查找此信息没有刷新,没有提交
这是表单的第一页
<form name='' method='post' action='<?php $_PHP_SELF ?>'>
<input name='txt_name' id='' type='text'>
Run Code Online (Sandbox Code Playgroud)
这个下拉菜单从数据库中读取
<select id="groups" name="txt_label" class="form-control">
';?>
<?php
$sql=mysqli_query($conn,"select DISTINCT db_label from tbl_label")or die(mysqli_error($conn));
echo'<option value="">-- Select --</option>';
while($row=mysqli_fetch_array($sql)){
$label=$row['db_label'];
echo "<option value='$label'>$label</option>";
}echo'</select>';?><?php echo'
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
另一页中的第二种形式
<form class="form-inline" role="form" name="form" method="post" action="';?><?php $_PHP_SELF ?><?php echo'">
<div class="form-group">
<label for="pwd">Label</label>
<input id="txt_label" name="txt_label" type="text" placeholder="Label" class="form-control input-md">
</div>
<div class="form-group">
<label for="pwd">Sub Label</label>
<input id="txt_sublabel" name="txt_sublabel" type="text" placeholder="SubLabel" class="form-control input-md">
</div>
<input type="submit" name="addlabel" value="Add" class="btn btn-default">';
Run Code Online (Sandbox Code Playgroud) 我想回应一下特定查询的所有内容.如果echo $ res我只得到一个字符串.如果我改变了第二个mysql_result参数,我可以获得第二个,第二个等等,但我想要的是所有这些,一个接一个地回应.如何将mysql结果转换为可以使用的内容?
我试过了:
$query="SELECT * FROM MY_TABLE";
$results = mysql_query($query);
$res = mysql_result($results, 0);
while ($res->fetchInto($row)) {
echo "<form id=\"$row[0]\" name=\"$row[0]\" method=post action=\"\"><td style=\"border-bottom:1px solid black\">$row[0]</td><td style=\"border-bottom:1px solid black\"><input type=hidden name=\"remove\" value=\"$row[0]\"><input type=submit value=Remove></td><tr></form>\n";
}
Run Code Online (Sandbox Code Playgroud) 我的代码中出现此错误,我不知道如何解决我的代码:
<?php
session_start();
include_once"connect_to_mysql.php";
$db_host = "localhost";
// Place the username for the MySQL database here
$db_username = "root";
// Place the password for the MySQL database here
$db_pass = "****";
// Place the name for the MySQL database here
$db_name = "mrmagicadam";
// Run the actual connection here
$myConnection= mysql_connect("$db_host","$db_username","$db_pass") or die ("could not connect to mysql");
mysql_select_db("mrmagicadam") or die ("no database");
$sqlCommand="SELECT id, linklabel FROM pages ORDER BY pageorder ASC";
$query=mysqli_query($myConnection, $sqlCommand) or die(mysql_error());
$menuDisplay="";
while($row=mysql_fetch_array($query)) {
$pid=$row["id"]; …Run Code Online (Sandbox Code Playgroud) 嗨我有一个70/80字段表单,我需要插入到表中,所以而不是手动创建一个巨大的插入语句我首先在我的数据库中创建一个表从表单中的输入的名称这里是我的代码用于创建/更改表
function createTable($array, $memberMysqli)
{
foreach ($array as $key => $value)
{
//echo "<p>Key: ".$key." => Value: ".$value . "</p>";
$query = "ALTER TABLE questionnaire ADD ".$key." text";
if($stmt = $memberMysqli->prepare($query))
{
$success = $stmt->execute();
}
}
echo "<h1>Array count: ". count($array) ."</h1>" ;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,并改变了我想要的表格.现在要插入表单值来执行此操作,我执行基本的一个字段插入存储行的id,然后循环所有更新该行的post变量.这是我的代码:
$stmt = $memberMysqli->prepare("INSERT INTO questionnaire(userid) VALUES (?)");
$stmt->bind_param('s', $_POST['userid']);
$stmt->execute();
$rowid = $stmt->insert_id;
$stmt->close();
$memberMysqli->autocommit(FALSE);
function updateColumn($memberMysqli, $query, $uid, $value)
{
if ($value)
{
$stmt = $memberMysqli->prepare($query);
//Throws bind param error here
$stmt->bind_param("ss", $value, …Run Code Online (Sandbox Code Playgroud) mysqli中有一个函数,被称为mysqli_report(),它看起来像PDO的setAttribute()方法及其ERRMODE_*常量的对应物.手册说:
MYSQLI_REPORT_STRICT
Throw mysqli_sql_exception for errors instead of warnings
所以,PDO::ERRMODE_EXCEPTION考虑到,我尝试了这段代码
mysqli_report(MYSQLI_REPORT_STRICT);
$mysqli->query("foo");
Run Code Online (Sandbox Code Playgroud)
但是,令我失望的是,它没有产生任何例外或警告.
所以,这里有一个问题:有没有办法告诉mysqli在不使用的情况下抛出异常MYSQLI_REPORT_ALL?
如果用户在登录页面的“密码”和“登录”字段中输入正确的信息,我目前正在编写脚本来登录用户。脚本工作得很好,但是我实际上不知道这两行代码对整体用户体验意味着什么和做了什么。
我即将参加考试,我必须解释代码的含义,如果你们通过解释下面两行代码的作用来帮助我,那将是绝对令人惊讶的。这是完整的脚本:
<?php
require('db_connect.php');
if (isset($_POST['user_id']) and isset($_POST['user_pass'])) {
$username = $_POST['user_id'];
$password = $_POST['user_pass'];
$query = "SELECT * FROM dataforlogin WHERE username='$username' and password='$password'";
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if ($count == 1) {
header("location: ../staudal/dashboard/index.php");
} else {
echo "Fail";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我难以理解的两行代码是:
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
Run Code Online (Sandbox Code Playgroud)
他们做什么,为什么?
php ×13
mysqli ×8
mysql ×7
database ×2
ajax ×1
environment ×1
exception ×1
insert ×1
javascript ×1
jquery ×1
null ×1
sql ×1
sql-insert ×1
sql-update ×1