[英]Cannot assign PHP variable to mysqli query
因此,我試圖在我最近在WAMP Server 2.5版上建立的網站上,從我的一個數據庫中回應用戶的每一行。 我可能是錯的,但是我已經搜索了Google,並且還搜索了該網站的帖子...我認為這還沒有解決這個問題。
在通過遵循教程/練習來使用PHP的實踐中,我當然發現MySQL現在偏愛PDO或MySQLi,因此我決定嘗試使用MySQLi。
奇怪的是,我已經包含了配置MySQL連接的PHP文件,而且我知道連接變量已正確調用,因為我什至打印出了將變量分配給的查詢結果:
mysqli_result Object ( [current_field] => 0 [field_count] => 3 [lengths] => [num_rows] => 1 [type] => 0 )
以上是我使用時的輸出:
print_r($db_con->query("SELECT * FROM users"));
但是,當我嘗試將結果分配給$ user_rs之類的變量並打印該變量的值時,我得到“注意:未定義的變量:第58行的C:\\ wamp \\ www \\ index.php中的user_rs”。
這是我的文件。
dbconfig.php:
<?php
$db_con= new mysqli("localhost","root","abc123", "OTonGadgetHub");
if($db_con->connect_errno){
echo $db_con->connect_error;
}
?>
index.php:
<?php session_start();
include ("dbconfig.php"); ?>
<html>
<head>
<title>My Webpage</title>
<link rel = "stylesheet" type = "text/css" href = "site.css" />
<link rel="shortcut icon" href="index.html?img=favicon" type="image/ico" />
<script>
function validatingForm(){
var x;
var y;
x = document.getElementById('nameCheck').value;
y = document.getElementById('password').value;
if(x !="" && y !=""){
return true;
}
else if(x =="" && y == ""){
document.getElementById('errorMsg').innerHTML='<font color="red">(required) Name:</font>';
document.getElementById('errorPass').innerHTML='<font color="red">(required) Password:</font>';
return false;
}
else if(x =="" && y!=""){
document.getElementById('errorMsg').innerHTML='<font color="red">(required) Name:</font>';
document.getElementById('errorPass').innerHTML='<font color="blue">Password:</font>';
return false;
}
else if(y =="" && x!=""){
document.getElementById('errorPass').innerHTML='<font color="red">(required) Password:</font>';
document.getElementById('errorMsg').innerHTML='<font color="blue">Name:</font>';
return false;
}
}
</script>
</head>
<body>
<?php include("header.php"); ?>
<?php
if (isset($_SESSION['user']))
echo "<p class ='welcome' id='greeting'> Hi, ". $_SESSION['user'] . "! Welcome to the site!</p>";
else
echo "<p class ='welcome' id='greeting'> Please Login:</p>
<form action='welcome.php' method='post'>
<center><b id = 'errorMsg'>Name:</b>
<input type='text' id='nameCheck' name = 'username' /></center>
<br />
<center><b id='errorPass'>Password:</b> <input type='text' id ='password' name = 'password'/></center>
<br /><br />
<center><input type='submit' value='Log In' onClick='return validatingForm()'/></center>
</form>";
?>
<?php
if (isset($_SESSION['user']))
$user_rs = $db_con->query("SELECT * FROM users");
print_r($db_con->query("SELECT * FROM users"));
print_r($user_rs);
echo "<center><h1> User List:</h1>
<table border='1'>
<tr>
<td><b>User</b></td>
<td><b>Login password</b></td>
</tr>
<tr>";
while($record = $user_rs->fetch_object()){
echo "<td>" . $record['id'] . "</td>";
echo "<td>" . $record['username'] . "</td>";
echo "</tr>";
}
echo"</table></center>";
?>
<?php if (isset($_SESSION['user']))
echo "<center><a href='logout.php'>Logout</a></center>";?>
<p class = "content"> This is a page that is a scrap work in progress. </p>
<?php include("footer.php"); ?>
</body>
</html>
我還有其他文件,但相信這些不在問題范圍內。 但是,如果需要,我將很樂意提供其他文件。
提醒:我擔心的是,我實際上不能使用應該分配給$ user_rs的結果。 主要是,即使我似乎已正確地將其分配給查詢,也似乎什么也沒有。 先謝謝您的幫助。
這顯然是一個錯字樣的錯誤。
本質上,它詢問如何為表達式結果分配變量,答案是顯而易見的:
$user_rs = $db_con->query("SELECT * FROM users");
並且可以將特定的問題歸結為
“為什么我從下面的代碼中得到
Undefined variable: user_rs
錯誤
$user_rs = $db_con->query("SELECT * FROM users");
print_r($user_rs);
答案將是“那是不可能的”。
檢查您正在運行的文件以及類似的內容。
您的數據庫查詢正在將記錄集作為對象來獲取,但是您嘗試使用數組語法來引用字段。
<html>
<head>
<title>My Webpage</title>
<link rel = "stylesheet" type = "text/css" href = "site.css" />
<link rel="shortcut icon" href="index.html?img=favicon" type="image/ico" />
<script>
function validatingForm(){
var x;
var y;
var e;
var p;
x = document.getElementById('nameCheck').value;
y = document.getElementById('password').value;
e = document.getElementById('errorMsg');
p = document.getElementById('errorPass');
if(x !="" && y !=""){
return true;
} else if(x =="" && y == ""){
e.innerHTML='<font color="red">(required) Name:</font>';
p.innerHTML='<font color="red">(required) Password:</font>';
return false;
} else if(x =="" && y!=""){
e.innerHTML='<font color="red">(required) Name:</font>';
p.innerHTML='<font color="blue">Password:</font>';
return false;
} else if(y =="" && x!=""){
e.innerHTML='<font color="red">(required) Password:</font>';
p.innerHTML='<font color="blue">Name:</font>';
return false;
}
}
</script>
</head>
<body>
<?php
include("header.php");
if ( isset( $_SESSION['user'] ) ){
/* Use is logged in */
echo "
<p class ='welcome' id='greeting'>
Hi, ". $_SESSION['user'] . "! Welcome to the site!
</p>";
} else {
/* User is NOT logged in */
echo "
<p class ='welcome' id='greeting'> Please Login:</p>
<form action='welcome.php' method='post'>
<center>
<b id = 'errorMsg'>Name:</b>
<input type='text' id='nameCheck' name = 'username' />
</center>
<br />
<center>
<b id='errorPass'>Password:</b>
<input type='text' id ='password' name = 'password'/>
</center>
<br /><br />
<center>
<input type='submit' value='Log In' onClick='return validatingForm()'/>
</center>
</form>";
}
if ( isset( $_SESSION['user'] ) ){
/* Query the db, once! */
$user_rs = $db_con->query("SELECT * FROM `users`;");
/* Assume there is a recordset and create the table */
echo "
<center>
<h1> User List:</h1>
<table border='1'>
<tr>
<td><b>User</b></td>
<td><b>Login password</b></td>
</tr>";
/* loop through recordset - new row for each user */
while( $record = $user_rs->fetch_object() ){
echo "
<tr>
<td>" . $record->id . "</td>
<td>" . $record->username . "</td>
</tr>";
}
/* Close the table */
echo "
</table>
</center>";
}
if ( isset( $_SESSION['user'] ) ) echo "<center><a href='logout.php'>Logout</a></center>";
?>
<p class = "content"> This is a page that is a scrap work in progress. I WILL use CSS to do my presentation in future '-)</p>
<?php
include("footer.php");
?>
</body>
</html>
非常感謝您給我有關此問題的指導和指導。
我確實很喜歡給出的答案,但並不是因為有人可能會認為我接受RamRaider的答案。
所以我認為我會將其作為問題的實際答案。 我的問題似乎是我沒有用花括號清楚地定義PHP的范圍。 我將這些代碼排除在了代碼之外,結果,當我在檢查用戶會話的if語句放在括號之外時,它似乎變得困惑。 可憐的PHP服務器:(我確實濫用了它。
如果if-else語句的作用域很長(跨度超過一兩行代碼),則始終可以找到一種使用正確的語法將作用域括起來的方法。 否則,您會遇到困難。
話雖這么說,關於只查詢一次數據庫並像調用對象一樣調用屬性,這是一個很好的觀點,對於新手來說,這仍然對我有幫助。 在編寫mysqli語句時也要注意該注釋。
非常感謝大家。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.