PHP中MySQL异常查询问题咨询:查询punti表特定uud数据
Hey there, let’s figure out why your MySQL query is throwing an exception in PHP. Looking at your code snippet, here are targeted fixes and troubleshooting steps to resolve this:
1. First, Capture the Exact Error Message
Right now, your code checks for connection errors but doesn’t report issues with the query itself. This is the most important step—you need to know what exactly is failing. Update your query code to include error handling:
$con = mysqli_connect($serverd, $userd, $passd, $datad) or die("Unable to connect to the MySQL Server!"); $query = mysqli_query($con, "SELECT * FROM punti WHERE uud='2a1c866f-9f08-4c81-aeeb-48ec3b98ab43'"); // Add this check to get the query error if (!$query) { die("Query failed with error: " . mysqli_error($con)); } $numrows = mysqli_num_rows($query); if ($numrows > 0) { $array = array(); while ($row = mysqli_fetch_assoc($query)) { // Make sure this is spelled correctly! $array[] = $row; } }
The error message will tell you if it’s a syntax issue, missing table/column, permission problem, etc.
2. Verify Table and Column Names
- Double-check that the
puntitable exists in the database you’re connecting to ($datad). It’s easy to typo a table name! - Confirm the column name is exactly
uud—MySQL is case-sensitive on Linux servers, so if your column is namedUUDorUud, the query will fail. - Ensure the UUID value
2a1c866f-9f08-4c81-aeeb-48ec3b98ab43matches the format stored in your table (no extra spaces, correct hyphen placement).
3. Fix Input Handling (For Future Variable Use)
You commented out the mysqli_real_escape_string line, which is a red flag for when you eventually replace the hardcoded UUID with user input (like $_POST['uud']). Instead of manual escaping, use prepared statements—they’re safer and avoid SQL injection risks:
$uud = urldecode($_POST['uud']); $stmt = mysqli_prepare($con, "SELECT * FROM punti WHERE uud=?"); mysqli_stmt_bind_param($stmt, "s", $uud); // "s" means we're passing a string mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); $numrows = mysqli_num_rows($result); if ($numrows > 0) { $array = array(); while ($row = mysqli_fetch_assoc($result)) { $array[] = $row; } }
4. Check Incomplete Code
Your snippet cuts off at mysqli_fetch_as...—make sure this is completed to mysqli_fetch_assoc or mysqli_fetch_array. A typo here will throw an undefined function error.
Start with step 1 to get the exact error, and that will point you straight to the root cause!
内容的提问来源于stack exchange,提问作者Marcus J.Kennedy

