Bakit ganito

loktoy

Established
kapag maiksi sinulat ko ok sya may output pero kapag mahaba na text ito error nya

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 'comment'])){ $comment_content = $_POST['comment_content']; $post_id=$_POST[...' at line 1 in C:\xampp\htdocs\Innerjoin\user\comment.php:39 Stack trace: #0 C:\xampp\htdocs\Innerjoin\user\comment.php(39): mysqli_query(Object(mysqli), 'INSERT INTO pos...') #1 {main} thrown in C:\xampp\htdocs\Innerjoin\user\comment.php on line 39
ito code ko

if (isset($_POST['post'])){
$page_content = $_POST ['post_content'];
$pagecontent = $_POST ['postcontent'];



mysqli_query($con,"INSERT INTO post (comment,title,date_created,user_id) values ('$page_content','$pagecontent','".strtotime(date("Y-m-d h:i:sa"))."','$user_id') ")or die(mysqli_error());

}
?>
 
Ang error na binanggit mo ay nagsasabi na may mali sa syntax ng iyong SQL query. Ayon sa error message, ang isang posibleng dahilan ay ang mahaba mong text sa $page_content o $pagecontent na maaaring nagiging sanhi ng pagkakaroon ng invalid syntax sa query.

Para maayos ito, narito ang ilang mga hakbang na maaari mong gawin:

1. Siguraduhin na ang mga string variable na ginagamit mo sa query ay maayos na naka-quote. Maaari mong gamitin ang mysqli_real_escape_string() function upang maiwasan ang mga syntax error na maaaring dulot ng mga espesyal na karakter sa mga string.

Halimbawa:

PHP:
$page_content = mysqli_real_escape_string($con, $_POST['post_content']);
$pagecontent = mysqli_real_escape_string($con, $_POST['postcontent']);

2. Gumamit ng prepared statements o parameterized queries upang maiwasan ang SQL injection at mas ligtas na mag-execute ng mga SQL queries.

Halimbawa:

PHP:
$stmt = mysqli_prepare($con, "INSERT INTO post (comment, title, date_created, user_id) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "sssi", $page_content, $pagecontent, strtotime(date("Y-m-d h:i:sa")), $user_id);
mysqli_stmt_execute($stmt);

Sa pamamagitan ng paggamit ng prepared statements, ang mga parameter ay nai-insert sa query gamit ang mga placeholders (?). Dito, ang s ay nagpapahiwatig na ang parameter ay isang string, at ang i ay nagpapahiwatig na ang parameter ay isang integer.

3. Siguraduhing ang mga column names na iyong ginagamit sa query ay tamang-tama at nag-e-exist sa iyong database.

4. Siguraduhin na ang iyong database connection ($con) ay maayos at tama ang mga credentials.

Umaasa ako na makatulong ito sa iyo upang maayos ang iyong error. Kung mayroon kang iba pang mga katanungan, mangyaring sabihin lang.
 

Similar threads

About this Thread

  • 3
    Replies
  • 430
    Views
  • 2
    Participants
Last reply from:
loktoy

Trending Topics

Online now

Members online
399
Guests online
1,224
Total visitors
1,623

Forum statistics

Threads
2,274,114
Posts
28,953,735
Members
1,235,083
Latest member
Zrob69
Back
Top