我正在尝试在我的表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
请帮我找出问题所在。呵呵,提前谢谢。
答案 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语句顺利运行。 我想回应这些数值并不足以看出是否存在问题。
不好意思。