[英]How to get single value from MySQL query in PHP
我知道這篇文章與許多其他Stack Overflow問題類似。 但是,他們完全沒有幫助解決這個問題。 我希望查詢返回單個值並將其存儲在變量中。 SQL查詢在數據庫中運行良好,但不適用於PHP。 我在哪里錯了?
$datelink = $_GET['bdate'];
$nid = $mysqli->query("select `newsletterId` from `newsletter` where ndate='$datelink'")->fetch_object()->name;
$datelink=$_GET['bdate'];
$nid= $mysqli->query("SELECT `newsletterId` FROM `newsletter` WHERE ndate='$datelink' LIMIT 1")->fetch_object()->name;
在查詢數據庫之前,您應該啟動連接。
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
僅從$ _GET追加字符串也很危險。 您的網站可能會受到SQL注入的攻擊。 您絕對應該在准備好的語句中使用PDO 。 或其他類似的庫,例如,我喜歡dibi 。
更新:您正在訪問的列name
不存在。 它應該引發一個通知( PHP Notice: Undefined property: stdClass::$name
)。 如果您沒有看到通知並且您正在本地開發(當然應該),則可以在error_reporting = E_ALL
php.ini
文件中啟用它。
您可能需要column newsletterId
。 總共:
$mysqli = new mysqli('example.com', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
echo 'Failed to connect to MySQL: ' . $mysqli->connect_error;
}
$dateRaw = $_GET['bdate']; // for example '22.12.2012', if this value is already in format YYYY-MM-DD, you can step next line and use it
$date = date('Y-m-d', strtotime($dateRaw));
$statement = $mysqli->prepare("SELECT `newsletterId` FROM `newsletter` WHERE `ndate`=? LIMIT 1");
$statement->bind_param('s', $date); // replace the question mark with properly escaped date
$statement->execute();
$result = $statement->get_result();
if ($result->num_rows) {
$newsletterObject = $result->fetch_object();
$newsletterId = $newsletterObject->newsletterId; // you had $newsletterObject->name here
} else {
echo "Newsletter with the date doesn't exist";
}
$statement->close();
最初,我認為有一種簡單的方法來獲取單個值,但找不到它。 因此必須使用下面的完整代碼來獲取值。
$sql3="select newsletterId from newsletter where ndate='$bdate' limit 1";
$result3 = $conn->query($sql3);
if ($result3->num_rows > 0) {
while($row3 = $result3->fetch_assoc()) {
$nid=$row3['newsletterId']; //Here is where the single value is stored.
}
} else {
echo "0 results";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.