我在这个问题上经历了一段非常艰难的时光,有人建议我学习如何尝试捕捉块,以便更容易地找出错误所在。这是我第一次尝试。
我的@stmt2没有为我的print\r($stmt2)
行定义,这是一个错误。
Notice: Undefined variable: stmt2
这是我尝试接球的尝试。我有没有做错什么,导致这个错误出现?
try {
$con = mysqli_connect("localhost", "", "", "");
if (mysqli_connect_errno()) {
throw new Exception("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$cid = $_GET['cid'];
$tid = $_GET['tid'];
$userid = ( isset( $_SESSION['user'] ) ? $_SESSION['user'] : "" );
//Prepare
if($stmt = mysqli_prepare($con, "SELECT * FROM forum_topics WHERE `category_id`=? AND `id`=? LIMIT 1")) {
mysqli_stmt_bind_param($stmt, "ii", $cid, $tid);
mysqli_stmt_execute($stmt);
/* fetch value */
mysqli_stmt_fetch($stmt);
if (!$stmt) {
throw new Exception($con->error);
}
}
$stmt->store_result();
$numrows = $stmt->num_rows;
if($numrows == 1){
echo "<table width='100%'>";
if ( $_SESSION['user'] ) {
echo "<tr><td colspan='2'><input type='submit' value='Add Reply' onclick=\"window.location =
'forum_post_reply.php?cid=".$cid."$tid=".$tid."'\"> <hr />";
} else {
echo "<tr><td colspan='2'><p>Please log in to add your reply</p><hr /></td></tr>";
}
/*}
catch (Exception $e)
{
//print_r($e);
echo "There has been an error with the $stmt block.";
}
print_r($stmt);
try {*/
foreach($stmt as $row) {
//Prepared SELECT stmt to get forum posts
if($stmt2 = mysqli_prepare($con, "SELECT * FROM forum_posts WHERE `category_id`=? AND `topic_id`=?")) {
//var_dump($stmt2);
mysqli_stmt_bind_param($stmt2, "ii", $cid, $tid);
mysqli_stmt_execute($stmt2);
}
while (mysqli_stmt_fetch($stmt)) {
echo "<tr><td valign='top' style='border: 1px solid #000000;'>
<div style='min-height: 125px;'>".$row['topic_title']."<br />
by ".$row2['post_creator']." - " .$row2['post_date']. "<hr />" . $row2['post_content'] ."</div></td>
<td width='200' valign='top' align='center' style='border: 1px solid #000000;'>User Info Here!</td></tr>
<tr><td colspan='2'><hr /></td></tr>";
}
}
} else {
echo "<p>This topic does not exist.</p>";
}
}
catch (Exception $e)
{
//print_r($e);
echo "There has been an error with the foreach $stmt2 block.";
}
print_r($stmt2);
如果您想跟踪代码中发生的所有错误,您可以使用try,cat语句以正确的方式处理它们。在try块中,你可以把你所有的代码或其中的一部分。如果某个东西失败了,它将生成一个异常。
您也可以使用下一条语句引发该异常:
throw new Exception("I think something's failing");
在try block之后,您必须声明将处理异常的catkblock,使其对您可用。在下面的示例中,我将打印错误消息。
<?php
try {
/* all your code */
} catch (Exception $e) {
/* if something fails inside try block will be catched here */
print $e->getMessage();
}
您可以在此处找到更多关于此的信息:http://php.net/manual/en/language.exceptions.php
问题内容: 不久前开始使用PDO准备的语句,据我了解,它为您完成了所有转义/安全性工作。 例如,假设$ _POST [‘title’]是一个表单字段。 这真的安全吗?我还需要做其他事情吗?我还需要考虑什么? 谢谢。 问题答案: 严格来说,实际上不需要转义,因为参数值永远不会插值到查询字符串中。 查询参数的工作方式是在调用时将查询发送到数据库服务器,然后在调用时将参数值发送到数据库服务器。因此,它们
最近,我们对一些Cassandra集群进行了压力测试,比较了一致性级别、准备好的/未准备好的语句和同步/异步执行模式的所有组合的性能,在每种配置中,最高的性能总是异步运行的(任何/一个)未准备好的语句的组合!! 对于有意义的位,任何/一个一致性级别的限制都较少,因此应该是最快的。此外,异步运行查询,因此利用并行计算应该比按顺序运行它们更快,但是准备好的语句和非准备好的语句呢? 我们总是读到和听到(
我正在用spring Boot做一个项目。:图书馆管理系统。为了得到要计算的罚款,我已经更改了系统日期。但是,在此之后,当我重新运行应用程序时,在控制台中会出现以下错误 配置为侦听端口8080的Tomcat连接器无法启动。端口可能已在使用中,或者连接器配置错误。 验证连接器的配置,识别并停止正在侦听端口8080的任何进程,或者将此应用程序配置为侦听另一个端口。
我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?
问题内容: 我正在尝试使用准备好的语句来设置表名称以从中选择数据,但是在执行查询时,我总是收到错误消息。 错误和示例代码如下所示。 有什么想法可能会导致这种情况? 问题答案: 表名不能用作参数。它必须是硬编码的。因此,您可以执行以下操作: