这是我的代码:
include 'conn.php';
$conn = new Connection();
$query = 'SELECT EmailVerified, Blocked FROM users WHERE Email = ? AND SLA = ? AND `Password` = ?';
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('sss', $_POST['EmailID'], $_POST['SLA'], $_POST['Password']);
$stmt->execute();
$result = $stmt->get_result();
Run Code Online (Sandbox Code Playgroud)
我在最后一行得到错误:调用未定义的方法mysqli_stmt :: get_result()
这是conn.php的代码:
define('SERVER', 'localhost');
define('USER', 'root');
define('PASS', 'xxxx');
define('DB', 'xxxx');
class Connection{
/**
* @var Resource
*/
var $mysqli = null;
function __construct(){
try{
if(!$this->mysqli){
$this->mysqli = new MySQLi(SERVER, USER, PASS, DB);
if(!$this->mysqli)
throw new Exception('Could not create connection using …Run Code Online (Sandbox Code Playgroud) 问题可能过于简单,但我确实需要帮助.
我在Oracle 10g中创建了一个存储过程,但我无法调用它.我正在使用SQL Developer来管理数据库.
CREATE OR REPLACE
FUNCTION check_login
(username IN VARCHAR2, pwd IN VARCHAR2)
RETURN VARCHAR2
IS
isUserValid INTEGER;
BEGIN
SELECT Count(*) INTO isUserValid
FROM users
WHERE Username = username AND PASS_WORD = pwd;
return isUserValid;
END;
Run Code Online (Sandbox Code Playgroud)
我也尝试了这个:
CREATE OR REPLACE
PROCEDURE check_login
(username IN VARCHAR2, pwd IN VARCHAR2, RESULT OUT INTEGER)
IS
isUserValid INTEGER;
BEGIN
SELECT Count(*) INTO isUserValid
FROM users
WHERE Username = username AND PASS_WORD = pwd;
RESULT := isUserValid;
END;
Run Code Online (Sandbox Code Playgroud)
解析两者都不会给出任何错误消息.我使用以下语法来调用它们:
BEGIN
check_login('admin', 'admin');
END; …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
$stmt = $conn->mysqli->prepare('INSERT INTO photos (CaseNo, ImageName, CaptureTime, UploadTime) VALUES (?,?,?,?)');
$stmt->bind_param('isss', $caseno, $index.'.'.$extension, date('Y-m-d H:i:s'), date('Y-m-d H:i:s'));
Run Code Online (Sandbox Code Playgroud)
我也尝试了这个:
$stmt = $conn->mysqli->prepare('INSERT INTO photos (CaseNo, ImageName, CaptureTime, UploadTime) VALUES (?,?,?,?)');
$captureTime = date('Y-m-d H:i:s');
$uploadTime = date('Y-m-d H:i:s');
$stmt->bind_param('isss', $caseno, $index.'.'.$extension, $captureTime, $uploadTime);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
致命错误:**无法通过引用传递参数3**...文件路径...行#
请注意,CaptureTime和UploadeTime具有数据类型日期.并忽略我传递第3和第4参数的值相同的事实.
代码有什么问题?
有没有办法使用JavaScript/PHP获得正在上传的文件的实际创建/修改时间?
至于JavaScript,我已经研究了很多,尝试了很多代码,但没有运气(或许试图做出可能的不可能).
至于PHP,使用filectime ()和filemtime(),它只显示文件上传的日期/时间,而不是文件在源上实际创建/修改的时间.
简而言之,我想要的是在上传之前/期间/之后(尽可能地)检查文件的m时间,并决定是否将文件存储在服务器上,并将其报告回客户端.
我在PHP中开发了一个名为vishwasthali.org的网站,并在第三方服务器上将其托管在IIS7中.除了我使用MySQLi API 编写的数据库访问代码之外,其他所有工作都正常.代码在localhost上运行正常,但在服务器上运行不正常.使用phpinfo()服务器和我的机器上,我发现:
(1)在我的机器上(在Windows 7 32位,Apache托管环境中运行),PHP版本为5.3.8,mysqli版本为5.0.8-dev,并且
(2)在服务器上(在Windows Server 2008,IIS7托管环境中运行),PHP版本为5.2.14,mysqli版本为5.0.51a.
以下是phpinfo()服务器上的屏幕截图:

这是mysqli代码的示例.
session_start();
include_once 'code_files/conn.php';
$stmt = $mysqli->prepare('SELECT * FROM adminusers WHERE Username = ? AND `Password` = ?');
$stmt->bind_param('ss', $_POST['Username'], $_POST['Password']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0)
........
else
........
Run Code Online (Sandbox Code Playgroud)
使用echo get_class($mysqli);确实显示mysqli.这意味着,代码确实检测到了mysqli.但声明$stmt没有准备好.即使$mysqli->error;不显示任何错误,也可能是因为PHP在IIS上运行.
现在我有两个选择,要么更改数据库访问经典mysql API 的代码,要么通过从php.net下载最新的PHP二进制文件来升级服务器上的PHP和MySQLi版本.我不想选择第一个选项(这肯定有效),希望你知道为什么.后者不在我手中.想不出比这些更多的东西.
我想更换php_mysqli.dll可能会升级mysqli版本,不确定.但是PHP版本怎么样?
在这种情况下我该怎么办?在服务器上升级PHP和MySQLi版本会解决我的问题吗?如果是,是否会影响服务器上运行的其他PHP网站?
提前致谢.
这是我在jQuery AJAX调用期间调用的PHP代码:
<?php
include '../code_files/conn.php';
$conn = new Connection();
$query = 'SELECT Address_1, Address_2, City, State, OfficePhone1, OfficePhone2, Fax1, Fax2, Email_1, Email_2
FROM clients WHERE ID = ?';
$conn->mysqli->stmt_init();
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('s', $_POST['ID']);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo json_encode($row);
?>
Run Code Online (Sandbox Code Playgroud)
客户端代码是:
$.post(url, {ID:$('#ddlClients').val()},
function(Result){
// Result
}
);
Run Code Online (Sandbox Code Playgroud)
AJAX调用已成功完成.我得到的值,结果为
"{"Address_1":"Divisional Office 1","Address_2":"The XYZ Road",.....and so on
我想要的是能够使用返回的值,如Result.Address_1,Result.Address_2等.但我不能使用上面的代码.我试着用$row = $result->fetch_object()和$row = $result->fetch_array(),但没有用.
我知道这可以通过服务器端的代码完成:
$row = $result->fetch_assoc();
$retVal = array("Address_1"=>$row['Address_1'], "Address_2"=>$row['Address_2'].......);
echo …Run Code Online (Sandbox Code Playgroud) 我们可以在PHP中读取文件的头信息来确定上传的文件类型吗?
我不想依赖$_FILES['control_name_from_client']['type'].我们知道这个属性通过读取上传文件的扩展名来确定文件类型.
如果什么用户重命名,比如test.jpg放在 - > TEST.XLS.在这种情况下,$_FILES['control_name_from_client']['type']将显示类型为application/vnd.ms-excel而不是image/jpeg.如果必须执行代码来读取XLS文件以获取某些处理的数据,这很自然会产生问题.
有什么建议吗?
我正在开发一个PHP的网站 - MySQL.以下是一些注意事项:
服务器的配置提供了mysqli_stmt :: bind_object()的使用.但get_result()对我来说似乎是一个更好的选择,因为我们可以得到一个数组的形式.我已使用以下行重写函数以接受可变数量的参数:
call_user_func_array(array($ stmt,'bind_param'),$ params);
$ params是一个参数数组.
我寻找了几家托管公司,通过谈话和邮寄给许多公司的客户支持,包括GoDaddy和Manas Hosting,他们不提供使用mysqlnd.从逻辑上讲,他们坚持使用VPS或专用服务器.显然,即使在入门级别,建议的选项都非常昂贵.
所以,最后我的问题是,我们可以将mysqlnd安装/嵌入Linux服务器上的网站吗?如果没有,我有什么办法可以阻止我更改整个网站的代码,这将花费我很多天?
问候
这是我的代码:
$query = "SELECT Username, EmailVerified, Blocked FROM user";
$result = mysql_query($query, $link);
$row = mysql_fetch_assoc($result);
print_r($row);
Run Code Online (Sandbox Code Playgroud)
字段Username是字符串,EmailVerified并且Blocked类型为bit.该行print_r($row)显示Username字段的值,但不显示其他两个值.我也尝试了mysql_fetch_object(),mysql_fetch_row(),mysql_fetch_array(),但结果相同.
我们不能用mysql_query()获取位字段吗?
我们可以在PHP中动态创建和初始化对象吗?这是正常的代码:
class MyClass{
var $var1 = null;
var $var2 = null;
.
.
public function __construct($args){
foreach($args as $key => $value)
$this->$key = $value;
}
}
---------------------
$args = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST : $_REQUEST;
$obj = new MyClass($args);
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常.请注意,REQUEST参数的名称与MyClass类的成员准确对应.
但我们可以做这样的事情:
$class = "MyClass";
$obj = new $class;
Run Code Online (Sandbox Code Playgroud)
如果我们可以这样做,那么我们可以使用$ args初始化$ obj.
根据这篇文章,$ obj = $ class应该有效.但它对我不起作用.我试过get_class_vars($ obj).它引发了一个例外.
谢谢
我正在编写Excel加载项以读取文本文件,提取值并将它们写入Excel文件。我需要分割一条由一个或多个空格分隔的线,并将其以数组的形式存储,从中提取所需的值。
我正在尝试实现这样的事情:
arrStr = Split(line, "/^\s*/")
Run Code Online (Sandbox Code Playgroud)
但是编辑器在编译时抛出错误。
我该怎么办?