我正在尝试检查电子邮件是否已在注册中使用.当我在学校里工作时它运作良好,但现在它突然显示错误:
致命错误:在null上调用成员函数prepare()
我用它来包括
define("dbserver", "localhost");
define("dbuser", "user");
define("dbpass", "");
define("dbname", "user");
$db = new PDO(
"mysql:host=" .dbserver. ";dbname=" .dbname,dbuser,
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8"
) );
Run Code Online (Sandbox Code Playgroud)
在这里
session_start();
include "DBjoin.php";
if(isset($_POST["email"])) {
$_SESSION['email'] = $_POST["email"];
}
if(isset($_POST["nick"])) {
$_SESSION['nick'] = $_POST["nick"];
}
if(isset($_POST["pass"])) {
$_SESSION['pass'] = $_POST["pass"];
$_SESSION['pass'] = base64_encode($_SESSION['pass']);
}
$sthandler = $db->prepare("SELECT Email FROM Registrace WHERE Email = :email");
$sthandler->bindParam(':email', $_SESSION['email']);
$sthandler->execute();
if(filter_var($_SESSION['email'], FILTER_VALIDATE_EMAIL)) {
if($sthandler->rowCount() > 0){
echo "Email is …Run Code Online (Sandbox Code Playgroud) 我试图以防止SQL注入(标准网站)的方式为MySQL设置PHP查询.
我有几个INSERT查询,其中更改此工作正常,但在以下SELECT我不断收到错误,因为更新,它看起来像while循环不适用于我所做的更改(它运行良好,不使用语句作为在旧代码中).
谁能告诉我这里做错了什么?
新PHP:
$stmt = $conn->prepare("SELECT ? FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, ?");
$stmt->bind_param('s', $selectedLang);
$stmt->execute();
$result = $stmt->get_result();
while($arrCalWeekdays = $result->fetch_assoc()){
$calWeekdays[] = $arrCalWeekdays;
}
$conn->close();
Run Code Online (Sandbox Code Playgroud)
旧PHP(更改部分):
$sql = "SELECT " . $selectedLang . " FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, " . $selectedLang;
$result = $conn->query($sql);
while($arrCalWeekdays = $result->fetch_assoc()){
$calWeekdays[] = $arrCalWeekdays;
}
$conn->close();
Run Code Online (Sandbox Code Playgroud)
错误信息:
致命错误:在第21行的/homepages/21/d580042014/htdocs/myform.php中调用非对象上的成员函数fetch_assoc()
提前谢谢了.
我刚开始使用PHP进行编码,并且在尝试创建待办事项列表时,我在创建一个名为"add.php"的文件后撤消了,该文件应该向表中添加新数据.主文件index.php调用表元素ok并在浏览器上显示它们,但我无法添加新项.
add.php中的代码在这里:
<?php
require_once 'app/init.php';
if(isset($_POST['name'])) {
$name = trim($POST['name']);
if(!empty($name)) {
$addedQuery = $db->prepare("
INSERT INTO items (name, user, done, created)
VALUES (:name, :user, 0, NOW() )
");
$addedQuery->execute([
'name' => $name,
'user' => $_SESSION['user_id']
]);
}
}
header('location: index.php');
?>
Run Code Online (Sandbox Code Playgroud)
如果它有帮助,我在WampServer 2.5上使用PHP 5.5.12和MySQL 5.6.17
所以我试图在SQL中使用"LIKE",基本上是为了看一个玩家是否已经在一个团队中.这是我的代码:
$checkifonlytwo = "SELECT * FROM sg_turn_teams WHERE joinid = :joinid AND players LIKE '%:ownerid,%'";
$paramstwo = array(
":joinid" => $joinid,
":ownerid" => $_SESSION['user']['id']
);
try{
$stmttwo = $db->prepare($checkifonlytwo);
$resulttwo = $stmttwo->execute($paramstwo);
}
catch(PDOException $ex){
die("Failed to run query #2: " . $ex->getMessage());
}
Run Code Online (Sandbox Code Playgroud)
另外你可以看到我希望它是LIKE '%1,%'例如,所以最后的逗号也是如此.
我的表结构看起来像这样.

编辑,玩家将会像没有名字的"1,2,3",因为用户可以更改他们的名字.图片有名字,但它应该是1,2,3
我有一个PHP函数,在回显一个字符串时,正在丢失一些传递给它的字符.有什么理由会发生这种情况吗?
我通过: $vhkvdov#jqlydk#p*_L#1qrlws|ufqh#KWLZ#1hwdgsX
它返回: #jqlydk#p*_L#1qrlws|ufqh#KWLZ#1hwdgsX
这是我的PHP代码:
<?php
function display($str) {
echo $str;
}
display("$vhkvdov#jqlydk#p*_L#1qrlws|ufqh#KWLZ#1hwdgsX");
?>
Run Code Online (Sandbox Code Playgroud) 我有一个带PDO的登录系统,它存储用户登录cookie时的用户名.这意味着当它们到达重定向页面时,cookie可用于获取该用户的更多数据(例如,名字和名字).
这是在index.php文件中设置cookie的代码:
setcookie('username',$username,time() + (86400 * 7));
这是我想使用cookie的值获取数据的代码:
$username = $_COOKIE['username'];
$query = $handler->query('SELECT * FROM users WHERE username ='$username' ');
while($r = $query->fetch(PDO::FETCH_OBJ)){
echo $r->firstname, '<br>';
echo $r->secondname, '<br>';
}
Run Code Online (Sandbox Code Playgroud)
每次运行代码时,都会返回以下错误消息:
解析错误:语法错误,第17行的C:\ xampp\htdocs\web\home.php中的意外'$ username'(T_VARIABLE)
我是新学习php,但我一开始就陷入困境.无论我在PHP中尝试什么方法,但我无法在输出中显示变量数据..下面是从互联网上复制粘贴的代码,即使在我看不到$ username的输出...请帮助我!
<html>
<body>
<h1>Hi Jacob</h1>
<h3>Demonstrates using a variable</h3>
<?php
$userName = "Jacob";
print Hi, $userName;
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在输出中它" Hi, $username "会显示出来.不是变量的数据
我有一个简单的 php 脚本,它将 POST 的内容存储到一个文本文件中。data.txt 看起来像这样:
Something - Line1
Something - Line2
Something - Line3
Something - Line4
Run Code Online (Sandbox Code Playgroud)
我试图找出将每一行设置为变量的最佳方法,例如
$line1 = "Something - Line1";
$line2 = "Something - Line2";
$line3 = "Something - Line3";
$line4 = "Something - Line4;"
Run Code Online (Sandbox Code Playgroud)
所以我可以用它做进一步的处理。请注意,行数可能会发生变化。有任何想法吗?:-)
谢谢!
嘿家伙我是整个数据库场景的新手,并尝试执行一个相对简单的任务,但显然我做错了什么.每次我尝试执行此语句时,都会收到1064错误,告诉我语法错误或服务器版本太旧.SQL Server版本是5.1.x,我正在运行PHP5.
这是我的代码:
$query = "INSERT INTO `cut_log` (`driver`, `date1`, `time`, `cut`, `flood`, `notes`) VALUES ($driver, $date, $time, $cut, $flood, $notes)";
$result = $mysqli->query($query);
if($result) {
echo "success";
} else {
echo "" . $mysqli->errno . $mysqli->error;
}
Run Code Online (Sandbox Code Playgroud) 我想弄清楚mysql -u root -p命令的作用。
我用谷歌搜索了命令,但找不到任何好的结果。