[英]How select rows from database mysql with foreach?
對於前。 地址頁面test.php?prid = 4477535
代碼頁test.php
function query($query) {
$database = 'test';
$host = 'test';
$username = 'test';
$password = 'test';
$link = mysql_connect($host,$username,$password);
if (!$link) {
die(mysql_error());
}
$db_selected = mysql_select_db($database);
if (!$db_selected) {
die(mysql_error());
}
$result = mysql_query($query);
mysql_close($link);
return $result;
}
$product_idn=$_GET['prid'];
$select_image = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'") or die(mysql_error());
foreach ($select_image as $row)
{
$select_image_array[]=$row->image;
}
print_r ($select_image_array);
收到請求
SELECT *
FROM products_images
WHERE `product_idn` = '4477535'
如果使從phpmyadmin選擇,我有10行。
但是,如果我使用test.php?prid = 4477535,則會看到空白頁。
print_r($ select_image_array)不顯示數組。
告訴我為什么我用phpmyadmin查看行而不用腳本查看行?
就像其他人說的那樣,由於不對輸入進行序列化,但是您很容易進行SQL注入,但是要修復代碼,請使用以下命令:
$select_image = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'") or die(mysql_error());
while($data = mysql_fetch_assoc($select_image))
{
echo $data['image'];
}
你做錯了。 您必須將資源(mysql_query返回資源)提取到數組中,並且數組的鍵將是從查詢返回的行的名稱。
$product_idn=$_GET['prid'];
$select_image = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'") or die(mysql_error());
while($fetch=mysql_fetch_assoc($select_image))
{
echo $fetch['image'];
}
print_r ($select_image_array);
順便說一句,您在這里有一個安全漏洞-SQL注入。
測試以下
$result = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'")
$select_image = mysql_fetch_assoc($result);
var_dump($select_image);
有關更多信息,請參見http://se2.php.net/mysql_query
您只需回顯$ row-> image; 永遠不要初始化$ select_image_array
print_r ($select_image_array);
由於未定義$select_image_array
因此不會顯示任何內容。 您的意思是print_r ($select_image);
?
query()是您定義的函數嗎? 如果沒有,並且您沒有錯誤,則可能什么也看不到。
您還需要清理SQL。 現在是最簡單的方法,因為它是整數:
$product_idn=(int)$_GET['prid'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.