如何在 PHP 函数中正确使用 MySQL 查询? [关闭]
Posted
技术标签:
【中文标题】如何在 PHP 函数中正确使用 MySQL 查询? [关闭]【英文标题】:How to use a MySQL Query within a PHP function correctly? [closed] 【发布时间】:2014-08-17 16:34:31 【问题描述】:所以我尝试在 php 函数中运行 mysql 查询,但出现错误。
所以目前我有这个:
ob_start();
$mysqli = new mysqli('localhost', 'database', '', 'user');
if ($mysqli->connect_errno)
echo 'Connection to database failed!';
exit;
$mysqli->set_charset('utf8mb4');
下面这个:
require_once('function_x.php');
function_x.php 包含:
function doX($variable)
global $mysqli;
$stmt = $mysqli->prepare("SELECT `x` FROM `y` WHERE `z` = ?");
$stmt->bind_param("s", $variable);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($db_x);
if ($stmt->affected_rows = 1)
//Do something
因此,当不使用此功能时,页面加载时不会发出警告。但是如果我尝试使用它,例如doX('test')
我收到一个致命错误,说 'Fatal error: doX(): Cannot write property in ...'
与 if ($stmt->affected_rows = 1)
在线。
我无法弄清楚为什么会出现此错误。有什么想法吗?
【问题讨论】:
是否需要在包含你的function_x.php页面的页面中声明全局变量?在包含的页面中将其声明为全局不会导致父级无法访问它吗?如果错了,我很抱歉最近没有做太多 PHP 【参考方案1】:=
用于分配。
==
用于比较。
【讨论】:
哦,天哪……好吧,我觉得自己很笨!谢谢! :p 我们都犯了这个错误。这次你很幸运,因为affected_rows
是 mysqli 语句的只读属性。有些人养成了把常量值放在左边的习惯,比如if (1 = $stmt->affected_rows)
,所以如果他们输入错误的操作符,他们肯定会出错。以上是关于如何在 PHP 函数中正确使用 MySQL 查询? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PHP 中使用带有 PDO 的 MySQL 用户函数?
如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)