如何在 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)

php 如何在eloquent查询生成器中使用mysql函数

mysql用户定义函数 - 如何在PHP中

PHP MySQL查询在结果中显示错误的日期时间

如何使用php将日期插入mysql查询? [复制]