2017-01-20 37 views
1

我正在制作一个用于练习PHP和MySQL的状态更新页面。尝试在PHP中回显某个ID时出现SQLi错误

我目前正试图在页面上回显保存的状态。

状态保存在名为“状态”的行中,并且它们在称为“statusID”的行中都被赋予了一个特定的ID。

我遇到的问题是我想要使用哪个提取,因为使用(string)$var将其转换为字符串不起作用。 ($var就是一个例子)。

此外,$idNum变量是以后使用的东西,应该与此无关。

这里是代码:(显然,第一个变量被截尾,所以没有尝试连接到数据库,连接在实际代码中工作。) 问题出在$fetchRes我相信。

<?php 
$idNum = 1; 
$servername = "censored"; 
$username = "censored"; 
$password = "censored"; 
$db_name = "censored"; 
$conn = mysqli_connect($servername, $username, $password, $db_name); 

if ($conn->connect_error) 
{ 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT Status FROM SavedStatuses WHERE statusID=1;"; 
$statusQuery = mysqli_query($conn, $sql); 
$fetchRes = mysqli_fetch_assoc($statusQuery); 

if($conn->query($sql) == TRUE) 
{ 
    echo $fetchRes; 
} else { 
    echo "Failed to retrieve status, error: " . $conn->error; 
} 
?> 
+3

您正在查询两次,查询一次并循环显示成功结果 –

+0

'mysqli_query','$ conn-> query'。确保你了解你使用哪种mysqli方法。 –

+0

你能发表一个答案吗?我很新,所以我什至不知道第二个查询发生在哪里 – Chaost

回答

2

正如我在评论中提到的那样,您要查询两次而不是循环(成功)结果。

“循环”是使用whileforeach。本例中我使用了一个while循环。

从 “官” 手册:

例子:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5"; 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
    } 

    /* free result set */ 
    $result->free(); 
} 

/* close connection */ 
$mysqli->close(); 
?> 

所以你的情况,你的代码将作为阅读:

旁注:Statusstatus是两种不同的动物,因此请确保字母大小写匹配(在循环中)。

<?php 
$mysqli = new mysqli("censored", "censored", "censored", "censored"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

$query = "SELECT Status FROM SavedStatuses WHERE statusID=1"; 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     echo $row["Status"]; 
    } 

    /* free result set */ 
    $result->free(); 
}else{ 
echo "The query failed: " . mysqli_error($mysqli); 

} 

/* close connection */ 
$mysqli->close(); 
?> 
+0

嘿,非常感谢你的回答,直到现在还没有机会回复。这绝对有效,所以我现在要阅读它的工作原理!非常感谢 – Chaost

+0

@Chaost您非常欢迎,*欢呼声* –

相关问题