为什么我的Select Statement无法正常工作?

时间:2014-01-19 12:00:02

标签: php sql select

我正在尝试在我的表sql中选择行。我已经多次这样做,并且在这一刻它不会起作用。

显示变量$ id,显示正确的值,这意味着它从$ _POST接收到正确的值,但是在Select语句上使用它并使用mysql_fetch_array后,没有显示任何内容。

我的代码

$id=$_POST['idsend'];
$edit = mysql_query("SELECT * FROM students WHERE id= '$id'") or die(mysql_error());
$fetch=mysql_fetch_array($edit);
echo 'ID= '.$id; ---------> This one displays properly
echo 'ID= '.$fetch['id']; --------> displays nothing

请帮我找出问题所在。呵呵,提前谢谢。

3 个答案:

答案 0 :(得分:1)

使用PDO更安全,以防止SQL注入(我做了一个PDO的查询示例):

// it's better to put the following lines into a configuration file!
$host = "enter hostname here";
$dbname = "enter dbname here";
$username = "enter db username here";
$password = "enter db password here";
// setup a PDO connection (needs some error handling)
$db_handle = new PDO("mysql:host=$host;dbname=$dbname;", $username, $password);  
// prepare and execute query
$q_handle = $db_handle->prepare("select * from students where id = ?");
$id = $_POST["idsend"];
$q_handle->bindParam(1, $id);
$q_handle->execute();
// get stuff from array
$arr = $q_handle->fetch(PDO::FETCH_ASSOC);
echo $arr["id"]; 

答案 1 :(得分:0)

首先,您不应再使用mysql_*函数了。

您的代码失败,因为mysql_fetch_array()只返回一个资源,您需要循环它以获得实际结果。

while ( $row = mysql_fetch_array( $edit ) ) {
    printf( 'ID: %s', $row['id'] );
}

答案 2 :(得分:0)

好的,我发现了什么是错的。我为扰乱每个人而道歉。我已经意识到我的代码中有什么问题,你不会在我在我的问题中发布的代码中找到它。

粗心再次成为所有这些的原因。 :)呵呵

这是错误的来源

<form action="" method="post">
<input type="hidden" name="idsend" value="' . $row['id'] . '"/>

我为一个带有额外空格/字符的值分配了一个变量?因此代码必须如下所示。

<input type="hidden" name="idsend" value="'.$row['id'].'"/>

必须正确分配才能使用select语句顺利运行。 我想回应这些数值并不足以看出是否存在问题。

不好意思。