 |
เขียนโปรแกรม มันขึ้น เออเร่อคะ Fatal error: Uncaught TypeError: mysqli::__construct(): Argument #1 ($hostname) must be of type ?string, mysqli given in C:\xampp\htdocs\php1\show_detail.php:20 Stack trace: #0 C:\xampp\htdocs\php1\show_detail.php(20): mysq |
|
 |
|
|
 |
 |
|
โปรแกรมรันไม่ผ่าน ขึ้นเออเร่อ
[font=Verdana]Fatal error: Uncaught TypeError: mysqli::__construct(): Argument #1 ($hostname) must be of type ?string, mysqli given in C:\xampp\htdocs\php1\show_detail.php:20 Stack trace: #0 C:\xampp\htdocs\php1\show_detail.php(20): mysqli->__construct(Object(mysqli), 'Select * From Q...') #1 {main} thrown in C:\xampp\htdocs\php1\show_detail.php on line 20[/font]
มันหมายความว่าอะไรคะ แก้ยังไง ต้องแก้ตรงไหนคะ พอดีหันเขียนอยู่คะ ทำตามหนังสือคะ
<?php
$item =isset ($_GET["item"]);
//กำหนดชื่อโฮสต์และ user name
$link = mysqli_connect("localhost","root");
mysqli_set_charset($link,'utf8');
mysqli_query($link,"Use Board;");//เรียกฐานข้อมูล Board
//ฟังก์ชันที่เปลี่ยนอักษรพิเศษเป็น HTML แสดงผลได้
function renHTML($strTemp)
{
$strTemp = n12br(htmlspecialchars($strTemp));
return $strTemp;
}
//ดึงเรคคอร์ดจาก Question โดยดึงเฉพาะกระทู้ที่ตรงกับหมายเลขกระทู้ที่ส่งมา
//มาจากไฟล์ show_question.php
$sql = "Select * From Question where qno=$item;";
//$result = mysqli_query($link,$sql);
$mysqli = @new mysqli($link,$sql);
$dbarr = mysqli_fetch_array($result);
?>
คำถาม <b>
<?php
echo renHTML($dbarr['qtopic']);
?>
</b><br>
<table width="100%" border="1" bgcolor=#E0E0E0
bordercolor="black">
<tr><td>
<?php
echo renHTML($dbarr['qdetail']); //พิมพ์รายละเอียดกระทู้
?><br>
โดย<b>
<?php echo renHTML($dbarr['qname']);//พิมพ์ชื่่อผู้ตั้งกระทู้
?></b>
</td></tr>
</table><br>
<?php
//ดึงเรคอร์ดจากตราง Answer โดยดึงเฉพาะเรคคอร์ดที่เป็นคำตอบของกระทู้นั้นๆ
$sql = "Select * From Answer where aquestionno=$item;";
$resul = mysqli_query($link,$sql);
if ($result)
{
//วนลูปเพื่อแสดงคำตอบทั้งหมด
while ($dbarr = mysqli_fetch_array($result))
{
?>
คำตอบที่ <b>
<?php
echo $dbarr['ano']; //พิมพ์หมายเลขกระทู้
?></b><br>
<table width="100%" border="1">
<tr><td>
<?php
echo renHTML($dbarr['$adarr']);
?><br>
โดย <b>
<?php
echo renHTML($dbarr['aname']);
?></b>
</td></tr>
</table><br>
<?php
}
}
//สร้างฟอร์ม โดยกำหนดชื่อไฟล์ที่ทำงานต่อคือ add_answer.php
//โดยส่งหมายเลขข้อกระทู้ผ่านตัวแปร answerno ไปด้วย
echo "<form method=post action=add_answer.php?answerno=".$item.">";
mysqli_close($link);
?>
คำตอบ : <br>
<! สร้าง Text Area สำหรับคำตอบของกระทู้ โดยตั้งชื่อว่า a_answer>
<textarea cols="40" rows="5" name="a_answer"></textarea><br>
<input type="submit" value="ส่งคำตอบ">
<input type="reset" value="ยกเลิก">
</form>
-------------------------------------------------------------------------------------------------
โปรแกรม add_answer.php
รันไม่ผ่านเช่นกันคะ ฟ้องเออเร่อแบบนี้คะ
Warning: Undefined array key "answerno" in C:\xampp\htdocs\php1\add_answer.php on line 2
Warning: Undefined array key "a_answer" in C:\xampp\htdocs\php1\add_answer.php on line 3
Warning: Undefined array key "a_name" in C:\xampp\htdocs\php1\add_answer.php on line 4
Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Form Answer Where aquestionno=' at line 1 in C:\xampp\htdocs\php1\add_answer.php:14 Stack trace: #0 C:\xampp\htdocs\php1\add_answer.php(14): mysqli_query(Object(mysqli), 'Select * Form A...') #1 {main} thrown in C:\xampp\htdocs\php1\add_answer.php on line 14
********************************************************************************************************
ตัวโคสคือ
<?php
$answerno = $_GET["answerno"];
$a_answer = $_POST["a_answer"];
$a_name = $_POST["a_name"];
//กำหนดชื่อโอสต์และ user namespace
$link = mysqli_connect("localhost","root");
mysqli_set_charset($link,'utf8');
mysqli_query($link,"Use Board;");
//ดึงเรคอร์ดจากตาราง Answer โดยมีเงื้อนไขว่าดึงเฉพาะเรคอร์ดที่หมายเลขของกระทู้
//ตรงกับค่าที่ส่งจากไฟล์ show_dtail.php
$sql = "Select * Form Answer Where aquestionno=$answerno;";
$count = 1;
$result = mysqli_query($link,$sql);
//วนลูปเพื่อนับคำตอบ
while ($dbarr = mysqli_fetch_array($result))
{
$count++;
}
//เพิ่มเรคอร์ดใหม่ (คำตอบใหม่) ลงในตาราง Answer
$sql = "Insert Into Answer" .
"values ($answerno,$count,'$a_answer','$a_name');";
$result = mysqli_query($link,$sql);
if ($result)
{
//แก้ไขจำนวนคำตอบที่มีผู้ตอบในตาราง Question ในปัจจุบ้น
$sql = "Update Question Set qCount=qCount+1".
"Where qno=$answerno";
$result = mysqli_query($link,$sql);
echo "คำตอบถูกส่งลงฐานข้อมูลแล้ว<br><br>";
echo "<a href=show_question.php>หน้าหลักของเว็บบอร์ด</a>";
}
else
echo "ไม่สามารถบันทึกคำตอบลงฐานข้อมูลได้ กรุณาตรวจสอบ";
mysqli_close($link);
?>
------------------------------------------------------------------------------------------------------
ฐานข้อมูลเกี่ยวข้อง 2 อันคะ คือ Question
Answer คะ
มีไฟล์ที่เชื่อกัน form_question.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ฟอร์มตั้งกระทู้</title>
</head>
<body>
<h2> Web Board </h2><p>
<! กำหนดไฟล์ชื่อไฟล์ที่ใช้รับข้อมูลจากฟอร์ม คือ Insert_question.php>
<form name="form1" method="post" action="Insert_question.php">
หัวข้อของกระทู้:<! ชื่อ Textbox ของหัวข้อกระทู้คือ topic>
<input type="text" name="topic"><p>
<! ชื่อ textbox ของรายละเอียดคือ detail>
<textarea name="detail" cols="75" rows="10"></textarea><p>
ชื่อผู้ตั้งกระทู้: <! ชื่อ Textbox ของผู้ตั้งกระทู้คือ name>
<input type="text" name="name"><>
<input type="submit" name="submit" value="ส่งกระทู้">
<input type="reset" name="Submit2" value=ยกเลิก>
</form>
</body>
</html>
-----------------------------------------------------------------------------------------
โปรแกรม Insert_question.php
<?php
$topic = isset ($_POST["topic"]);
$detail = isset ($_POST["detail"]);
$name = isset($_POST["name"]);
//กำหนดชื่อโฮตต์และ user name
$link = mysqli_connect("localhost","root");
mysqli_set_charset($link,'utf8');
$sql = "Use Board"; //เรียกชื่อฐานข้อมูล Board
$result = mysqli_query($link,$sql);
$sql = "Select * From Question;";//ดึงทุกเรคอร์ดจากตาราง Question
$count = 0; //กำหนดจำนวนคำถามเริ่มต้นให้เท่ากับ0
$result = mysqli_query($link,$sql);
while($dbarr = mysqli_fetch_array($result))
{
$count++; //วนลูปเพื่อนับจำนวนคำถามที่มีอยู่ทั้งหมดในตาราง
}
$itemno = $count + 1; //เพิ่มจำนวนข้อคำถามขึ้นมาอีกหนึ่ง
// เพิ่มหมายเลขข้อ,หัวข้อ,รายละเอียด , ชื่อผู้ตั้งกระทู้ 0 ลงในตาราง Question
$sql = "Insert into Question Values($itemno,'$topic', '$detail','$name',0);";
$result = mysqli_query($link,$sql);
if ($result)
{
echo "เพิ่มกระทู้ใหม่ลงสู่ฐานข้อมูลแล้ว<p>";
mysqli_close($link);
}
else
{
echo "ไม่สามารถเพิ่มกระทู้ใหม่ลงในฐานข้อมูลได้ <p>";
}
echo "<a href = show_question.php>แสดงกระทู้ทั้งหมด</a><br>";
echo"<a href = form_question.html> กลับสู่หน้าฟอร์มตั้งกระทู้ใหม่ </a><br>";
?>
---------------------------------------------------------------------------------------------------------------------
โปรแกรม show_question.php
<html>
<head><title>หน้าหลักเว็บบอร์ด</title></head>
<body>
<H2>กระทู้ทั้งหมด</H2>
<hr>
<?php
//กำหนดโฮสต์และ user name
$link = mysqli_connect("localhost","root");
mysqli_set_charset($link,'utf8');
mysqli_query($link,"Use Board;");//เรียกใช้ฐานข้อมูล Board
//ดึงเรคอร์ดทั้งหมดจากตาราง Question โดยเรียงหมายเลขจากน้อยไปมาก
$sql = "select * from Question Order By qno Desc;";
$result = mysqli_query($link,$sql);
//วนลูปเพิ่อพิมพ์เรคอร์ดกระทู้ทั้งหมด
while ($dbarr = mysqli_fetch_array($result))
{
echo $dbarr['qno'];//พิมพ์หมายเลขกระทู้
//พิมพ์หัวข้อกระทู้ และสร้างลิ้งไปยังไฟล์ show_detail.php
//ส่งหมายเลขกระทู้ไปด้วย
echo " <a href=show_detail.php?item=$dbarr[qno]>";
echo "$dbarr[qtopic]</a> ";
echo $dbarr['qname'];
//พิมพ์จำนวนผู้ตอบกระทู้ในวงเล็บ
echo " [" . $dbarr['qcount'] ." ]<br>\n";
}
mysqli_close($link);
?>
<hr><a href = "form_question.html">ตั้งกระทู้ใหม่</a>
</body>
</html>
----------------------------------------------------------------------------------------------
โปรแกรมทุกตัวรันผ่านหมดคะ มีโปรแกรม show_detail.php กับ add_answer.php ที่รันไม่ผ่าน ช่วยดูให้หน่อยคะ ขอบคุณ
Tag : PHP, MySQL
|
|
 |
 |
 |
 |
Date :
2022-11-27 17:14:29 |
By :
love_good2531 |
View :
1519 |
Reply :
8 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันมีเออรเร่อ 2 โปรแกรม ช่วยดูให้หน่อยคะ โปรแกรม add_answer.php
|
 |
 |
 |
 |
Date :
2022-11-27 17:17:11 |
By :
love_good2531 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณคะจะแก้ไขคะ แต่ยังรันไม่ผ่านคะ งง คะ จะพยายามคะ
|
 |
 |
 |
 |
Date :
2022-11-28 11:34:57 |
By :
love_good2531 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันฟ้องแบบนี้อะคะ แก้ไงคะ แนะนำหน่อย
Fatal error: Uncaught Error: Non-static method mysqli::__construct() cannot be called statically in C:\xampp\htdocs\php1\show_detail.php:20 Stack trace: #0 {main} thrown in C:\xampp\htdocs\php1\show_detail.php on line 20
------------------------------------------------------------
<?php
$item =isset ($_GET["item"]);
//กำหนดชื่อโฮสต์และ user name
$link = mysqli_connect("localhost","root");
mysqli_set_charset($link,'utf8');
mysqli_query($link,"Use Board;");//เรียกฐานข้อมูล Board
//ฟังก์ชันที่เปลี่ยนอักษรพิเศษเป็น HTML แสดงผลได้
function renHTML($strTemp)
{
$strTemp = n12br(htmlspecialchars($strTemp));
return $strTemp;
}
//ดึงเรคคอร์ดจาก Question โดยดึงเฉพาะกระทู้ที่ตรงกับหมายเลขกระทู้ที่ส่งมา
//มาจากไฟล์ show_question.php
$sql = "Select * From Question where qno=$item;";
//$result = mysqli_query($link,$sql);
$result = mysqli::__construct ("$link","$sql");
$dbarr = mysqli_fetch_array($result);
?>
คำถาม <b>
<?php
echo renHTML($dbarr['qtopic']);
?>
</b><br>
<table width="100%" border="1" bgcolor=#E0E0E0
bordercolor="black">
<tr><td>
<?php
echo renHTML($dbarr['qdetail']); //พิมพ์รายละเอียดกระทู้
?><br>
โดย<b>
<?php echo renHTML($dbarr['qname']);//พิมพ์ชื่่อผู้ตั้งกระทู้
?></b>
</td></tr>
</table><br>
<?php
//ดึงเรคอร์ดจากตราง Answer โดยดึงเฉพาะเรคคอร์ดที่เป็นคำตอบของกระทู้นั้นๆ
$sql = "Select * From Answer where aquestionno=$item;";
$resul = mysqli_query($link,$sql);
if ($result)
{
//วนลูปเพื่อแสดงคำตอบทั้งหมด
while ($dbarr = mysqli_fetch_array($result))
{
?>
คำตอบที่ <b>
<?php
echo $dbarr['ano']; //พิมพ์หมายเลขกระทู้
?></b><br>
<table width="100%" border="1">
<tr><td>
<?php
echo renHTML($dbarr['$adarr']);
?><br>
โดย <b>
<?php
echo renHTML($dbarr['aname']);
?></b>
</td></tr>
</table><br>
<?php
}
}
//สร้างฟอร์ม โดยกำหนดชื่อไฟล์ที่ทำงานต่อคือ add_answer.php
//โดยส่งหมายเลขข้อกระทู้ผ่านตัวแปร answerno ไปด้วย
echo "<form method=post action=add_answer.php?answerno=".$item.">";
mysqli_close($link);
?>
คำตอบ : <br>
<! สร้าง Text Area สำหรับคำตอบของกระทู้ โดยตั้งชื่อว่า a_answer>
<textarea cols="40" rows="5" name="a_answer"></textarea><br>
<input type="submit" value="ส่งคำตอบ">
<input type="reset" value="ยกเลิก">
</form>
-----------------------------------------------------------------------------------
|
 |
 |
 |
 |
Date :
2022-11-28 11:48:02 |
By :
love_good2531 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
test
|
 |
 |
 |
 |
Date :
2022-11-29 13:26:52 |
By :
v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สรุป เว็บไทยครีเอทโดนแคร็กเน่าไปแล้ว แอดมินก็ไม่มาดูแลแล้ว 
|
 |
 |
 |
 |
Date :
2022-11-29 13:27:57 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|